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

Commit 700c955f authored by Amy Zhang's avatar Amy Zhang Committed by Android (Google) Code Review
Browse files

Merge changes from topic "trm-demux-des" into rvc-dev

* changes:
  Add Descrambler resource management in Tuner Resource Manager
  Add demux resource management into Tuner Resource Manager
parents 91482ccc 151fbb63
Loading
Loading
Loading
Loading
+67 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,8 @@ package android.media.tv.tunerresourcemanager;
import android.media.tv.tunerresourcemanager.CasSessionRequest;
import android.media.tv.tunerresourcemanager.CasSessionRequest;
import android.media.tv.tunerresourcemanager.IResourcesReclaimListener;
import android.media.tv.tunerresourcemanager.IResourcesReclaimListener;
import android.media.tv.tunerresourcemanager.ResourceClientProfile;
import android.media.tv.tunerresourcemanager.ResourceClientProfile;
import android.media.tv.tunerresourcemanager.TunerDemuxRequest;
import android.media.tv.tunerresourcemanager.TunerDescramblerRequest;
import android.media.tv.tunerresourcemanager.TunerFrontendInfo;
import android.media.tv.tunerresourcemanager.TunerFrontendInfo;
import android.media.tv.tunerresourcemanager.TunerFrontendRequest;
import android.media.tv.tunerresourcemanager.TunerFrontendRequest;
import android.media.tv.tunerresourcemanager.TunerLnbRequest;
import android.media.tv.tunerresourcemanager.TunerLnbRequest;
@@ -147,6 +149,53 @@ interface ITunerResourceManager {
     */
     */
    void shareFrontend(in int selfClientId, in int targetClientId);
    void shareFrontend(in int selfClientId, in int targetClientId);


    /*
     * This API is used by the Tuner framework to request an available demux from the TunerHAL.
     *
     * <p>There are three possible scenarios:
     * <ul>
     * <li>If there is demux available, the API would send the handle back.
     *
     * <li>If no Demux is available but the current request info can show higher priority than
     * other uses of demuxes, the API will send
     * {@link IResourcesReclaimListener#onReclaimResources()} to the {@link Tuner}. Tuner would
     * handle the resource reclaim on the holder of lower priority and notify the holder of its
     * resource loss.
     *
     * <li>If no demux can be granted, the API would return false.
     * <ul>
     *
     * @param request {@link TunerDemuxRequest} information of the current request.
     * @param demuxHandle a one-element array to return the granted demux handle.
     *
     * @return true if there is demux granted.
     */
    boolean requestDemux(in TunerDemuxRequest request, out int[] demuxHandle);

    /*
     * This API is used by the Tuner framework to request an available descrambler from the
     * TunerHAL.
     *
     * <p>There are three possible scenarios:
     * <ul>
     * <li>If there is descrambler available, the API would send the handle back.
     *
     * <li>If no Descrambler is available but the current request info can show higher priority than
     * other uses of Descrambler, the API will send
     * {@link IResourcesReclaimListener#onReclaimResources()} to the {@link Tuner}. Tuner would
     * handle the resource reclaim on the holder of lower priority and notify the holder of its
     * resource loss.
     *
     * <li>If no Descrambler can be granted, the API would return false.
     * <ul>
     *
     * @param request {@link TunerDescramblerRequest} information of the current request.
     * @param descramblerHandle a one-element array to return the granted descrambler handle.
     *
     * @return true if there is Descrambler granted.
     */
    boolean requestDescrambler(in TunerDescramblerRequest request, out int[] descramblerHandle);

    /*
    /*
     * This API is used by the Tuner framework to request an available Cas session. This session
     * This API is used by the Tuner framework to request an available Cas session. This session
     * needs to be under the CAS system with the id indicated in the {@code request}.
     * needs to be under the CAS system with the id indicated in the {@code request}.
@@ -209,6 +258,24 @@ interface ITunerResourceManager {
     */
     */
    void releaseFrontend(in int frontendId);
    void releaseFrontend(in int frontendId);


    /*
     * Notifies the TRM that the Demux with the given handle was released.
     *
     * <p>Client must call this whenever it releases a demux.
     *
     * @param demuxHandle the handle of the released Tuner Demux.
     */
    void releaseDemux(in int demuxHandle);

    /*
     * Notifies the TRM that the Descrambler with the given handle was released.
     *
     * <p>Client must call this whenever it releases a descrambler.
     *
     * @param demuxHandle the handle of the released Tuner Descrambler.
     */
    void releaseDescrambler(in int descramblerHandle);

    /*
    /*
     * Notifies the TRM that the given Cas session has been released.
     * Notifies the TRM that the given Cas session has been released.
     *
     *
+24 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.tv.tunerresourcemanager;

/**
 * Information required to request a Tuner Demux.
 *
 * @hide
 */
parcelable TunerDemuxRequest;
 No newline at end of file
+96 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.tv.tunerresourcemanager;

import android.annotation.NonNull;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

/**
 * Information required to request a Tuner Demux.
 *
 * @hide
 */
public final class TunerDemuxRequest implements Parcelable {
    static final String TAG = "TunerDemuxRequest";

    public static final
                @NonNull
                Parcelable.Creator<TunerDemuxRequest> CREATOR =
                new Parcelable.Creator<TunerDemuxRequest>() {
                @Override
                public TunerDemuxRequest createFromParcel(Parcel source) {
                    try {
                        return new TunerDemuxRequest(source);
                    } catch (Exception e) {
                        Log.e(TAG, "Exception creating TunerDemuxRequest from parcel", e);
                        return null;
                    }
                }

                @Override
                public TunerDemuxRequest[] newArray(int size) {
                    return new TunerDemuxRequest[size];
                }
            };

    /**
     * Client id of the client that sends the request.
     */
    private final int mClientId;

    private TunerDemuxRequest(@NonNull Parcel source) {
        mClientId = source.readInt();
    }

    /**
     * Constructs a new {@link TunerDemuxRequest} with the given parameters.
     *
     * @param clientId id of the client.
     */
    public TunerDemuxRequest(int clientId) {
        mClientId = clientId;
    }

    /**
     * Returns the id of the client.
     */
    public int getClientId() {
        return mClientId;
    }

    // Parcelable
    @Override
    public int describeContents() {
        return 0;
    }

    @NonNull
    @Override
    public String toString() {
        StringBuilder b = new StringBuilder(128);
        b.append("TunerDemuxRequest {clientId=").append(mClientId);
        b.append("}");
        return b.toString();
    }

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeInt(mClientId);
    }
}
+24 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.tv.tunerresourcemanager;

/**
 * Information required to request a Tuner Descrambler.
 *
 * @hide
 */
parcelable TunerDescramblerRequest;
 No newline at end of file
+96 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.tv.tunerresourcemanager;

import android.annotation.NonNull;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

/**
 * Information required to request a Tuner Descrambler.
 *
 * @hide
 */
public final class TunerDescramblerRequest implements Parcelable {
    static final String TAG = "TunerDescramblerRequest";

    public static final
                @NonNull
                Parcelable.Creator<TunerDescramblerRequest> CREATOR =
                new Parcelable.Creator<TunerDescramblerRequest>() {
                @Override
                public TunerDescramblerRequest createFromParcel(Parcel source) {
                    try {
                        return new TunerDescramblerRequest(source);
                    } catch (Exception e) {
                        Log.e(TAG, "Exception creating TunerDescramblerRequest from parcel", e);
                        return null;
                    }
                }

                @Override
                public TunerDescramblerRequest[] newArray(int size) {
                    return new TunerDescramblerRequest[size];
                }
            };

    /**
     * Client id of the client that sends the request.
     */
    private final int mClientId;

    private TunerDescramblerRequest(@NonNull Parcel source) {
        mClientId = source.readInt();
    }

    /**
     * Constructs a new {@link TunerDescramblerRequest} with the given parameters.
     *
     * @param clientId id of the client.
     */
    public TunerDescramblerRequest(int clientId) {
        mClientId = clientId;
    }

    /**
     * Returns the id of the client.
     */
    public int getClientId() {
        return mClientId;
    }

    // Parcelable
    @Override
    public int describeContents() {
        return 0;
    }

    @NonNull
    @Override
    public String toString() {
        StringBuilder b = new StringBuilder(128);
        b.append("TunerDescramblerRequest {clientId=").append(mClientId);
        b.append("}");
        return b.toString();
    }

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeInt(mClientId);
    }
}
Loading