Loading media/java/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl +33 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media.tv.tunerresourcemanager; import android.media.tv.tunerresourcemanager.CasSessionRequest; import android.media.tv.tunerresourcemanager.IResourcesReclaimListener; import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerDemuxRequest; import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerLnbRequest; Loading Loading @@ -147,6 +148,29 @@ interface ITunerResourceManager { */ 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 Cas session. This session * needs to be under the CAS system with the id indicated in the {@code request}. Loading Loading @@ -209,6 +233,15 @@ interface ITunerResourceManager { */ 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 given Cas session has been released. * Loading media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl 0 → 100644 +24 −0 Original line number 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 media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.java 0 → 100644 +96 −0 Original line number 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); } } media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java +47 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public class TunerResourceManager { public static final int INVALID_LNB_ID = -1; public static final int INVALID_TV_INPUT_DEVICE_ID = -1; public static final int INVALID_TV_INPUT_PORT_ID = -1; public static final int INVALID_RESOURCE_HANDLE = -1; private final ITunerResourceManager mService; private final int mUserId; Loading Loading @@ -259,6 +260,37 @@ public class TunerResourceManager { } } /** * Requests a Tuner Demux resource. * * <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 has a 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 system 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. * If no Demux granted, this will return {@link #INVALID_RESOURCE_HANDLE}. * * @return true if there is Demux granted. */ public boolean requestDemux(@NonNull TunerDemuxRequest request, @NonNull int[] demuxHandle) { boolean result = false; try { result = mService.requestDemux(request, demuxHandle); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } return result; } /** * Requests a CAS session resource. * Loading Loading @@ -344,6 +376,21 @@ public class TunerResourceManager { } } /** * Notifies the TRM that the Demux with the given handle has been released. * * <p>Client must call this whenever it releases an Demux. * * @param demuxHandle the handle of the released Tuner Demux. */ public void releaseDemux(int demuxHandle) { try { mService.releaseDemux(demuxHandle); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Notifies the TRM that the given Cas session has been released. * Loading services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +17 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.media.tv.tunerresourcemanager.CasSessionRequest; import android.media.tv.tunerresourcemanager.IResourcesReclaimListener; import android.media.tv.tunerresourcemanager.ITunerResourceManager; import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerDemuxRequest; import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerLnbRequest; Loading Loading @@ -188,6 +189,15 @@ public class TunerResourceManagerService extends SystemService { } } @Override public boolean requestDemux(@NonNull TunerDemuxRequest request, @NonNull int[] demuxHandle) { if (DEBUG) { Slog.d(TAG, "requestDemux(request=" + request + ")"); } return true; } @Override public boolean requestCasSession( @NonNull CasSessionRequest request, @NonNull int[] sessionResourceId) { Loading @@ -213,6 +223,13 @@ public class TunerResourceManagerService extends SystemService { } } @Override public void releaseDemux(int demuxHandle) { if (DEBUG) { Slog.d(TAG, "releaseDemux(demuxHandle=" + demuxHandle + ")"); } } @Override public void releaseCasSession(int sessionResourceId) { if (DEBUG) { Loading Loading
media/java/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl +33 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media.tv.tunerresourcemanager; import android.media.tv.tunerresourcemanager.CasSessionRequest; import android.media.tv.tunerresourcemanager.IResourcesReclaimListener; import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerDemuxRequest; import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerLnbRequest; Loading Loading @@ -147,6 +148,29 @@ interface ITunerResourceManager { */ 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 Cas session. This session * needs to be under the CAS system with the id indicated in the {@code request}. Loading Loading @@ -209,6 +233,15 @@ interface ITunerResourceManager { */ 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 given Cas session has been released. * Loading
media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl 0 → 100644 +24 −0 Original line number 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
media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.java 0 → 100644 +96 −0 Original line number 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); } }
media/java/android/media/tv/tunerresourcemanager/TunerResourceManager.java +47 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public class TunerResourceManager { public static final int INVALID_LNB_ID = -1; public static final int INVALID_TV_INPUT_DEVICE_ID = -1; public static final int INVALID_TV_INPUT_PORT_ID = -1; public static final int INVALID_RESOURCE_HANDLE = -1; private final ITunerResourceManager mService; private final int mUserId; Loading Loading @@ -259,6 +260,37 @@ public class TunerResourceManager { } } /** * Requests a Tuner Demux resource. * * <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 has a 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 system 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. * If no Demux granted, this will return {@link #INVALID_RESOURCE_HANDLE}. * * @return true if there is Demux granted. */ public boolean requestDemux(@NonNull TunerDemuxRequest request, @NonNull int[] demuxHandle) { boolean result = false; try { result = mService.requestDemux(request, demuxHandle); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } return result; } /** * Requests a CAS session resource. * Loading Loading @@ -344,6 +376,21 @@ public class TunerResourceManager { } } /** * Notifies the TRM that the Demux with the given handle has been released. * * <p>Client must call this whenever it releases an Demux. * * @param demuxHandle the handle of the released Tuner Demux. */ public void releaseDemux(int demuxHandle) { try { mService.releaseDemux(demuxHandle); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Notifies the TRM that the given Cas session has been released. * Loading
services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +17 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.media.tv.tunerresourcemanager.CasSessionRequest; import android.media.tv.tunerresourcemanager.IResourcesReclaimListener; import android.media.tv.tunerresourcemanager.ITunerResourceManager; import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerDemuxRequest; import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerLnbRequest; Loading Loading @@ -188,6 +189,15 @@ public class TunerResourceManagerService extends SystemService { } } @Override public boolean requestDemux(@NonNull TunerDemuxRequest request, @NonNull int[] demuxHandle) { if (DEBUG) { Slog.d(TAG, "requestDemux(request=" + request + ")"); } return true; } @Override public boolean requestCasSession( @NonNull CasSessionRequest request, @NonNull int[] sessionResourceId) { Loading @@ -213,6 +223,13 @@ public class TunerResourceManagerService extends SystemService { } } @Override public void releaseDemux(int demuxHandle) { if (DEBUG) { Slog.d(TAG, "releaseDemux(demuxHandle=" + demuxHandle + ")"); } } @Override public void releaseCasSession(int sessionResourceId) { if (DEBUG) { Loading