/* * Copyright 2019 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.tuner.frontend; import android.annotation.NonNull; import android.annotation.SystemApi; /** * Physical Layer Pipe (PLP) settings for ATSC-3. * * @hide */ @SystemApi public class Atsc3PlpSettings { private final int mPlpId; private final int mModulation; private final int mInterleaveMode; private final int mCodeRate; private final int mFec; private Atsc3PlpSettings(int plpId, int modulation, int interleaveMode, int codeRate, int fec) { mPlpId = plpId; mModulation = modulation; mInterleaveMode = interleaveMode; mCodeRate = codeRate; mFec = fec; } /** * Gets Physical Layer Pipe (PLP) ID. */ public int getPlpId() { return mPlpId; } /** * Gets Modulation. */ @Atsc3FrontendSettings.Modulation public int getModulation() { return mModulation; } /** * Gets Interleave Mode. */ @Atsc3FrontendSettings.TimeInterleaveMode public int getInterleaveMode() { return mInterleaveMode; } /** * Gets Code Rate. */ @Atsc3FrontendSettings.CodeRate public int getCodeRate() { return mCodeRate; } /** * Gets Forward Error Correction. */ @Atsc3FrontendSettings.Fec public int getFec() { return mFec; } /** * Creates a builder for {@link Atsc3PlpSettings}. */ @NonNull public static Builder builder() { return new Builder(); } /** * Builder for {@link Atsc3PlpSettings}. */ public static class Builder { private int mPlpId; private int mModulation; private int mInterleaveMode; private int mCodeRate; private int mFec; private Builder() { } /** * Sets Physical Layer Pipe (PLP) ID. */ @NonNull public Builder setPlpId(int plpId) { mPlpId = plpId; return this; } /** * Sets Modulation. */ @NonNull public Builder setModulation(@Atsc3FrontendSettings.Modulation int modulation) { mModulation = modulation; return this; } /** * Sets Interleave Mode. */ @NonNull public Builder setInterleaveMode( @Atsc3FrontendSettings.TimeInterleaveMode int interleaveMode) { mInterleaveMode = interleaveMode; return this; } /** * Sets Code Rate. */ @NonNull public Builder setCodeRate(@Atsc3FrontendSettings.CodeRate int codeRate) { mCodeRate = codeRate; return this; } /** * Sets Forward Error Correction. */ @NonNull public Builder setFec(@Atsc3FrontendSettings.Fec int fec) { mFec = fec; return this; } /** * Builds a {@link Atsc3PlpSettings} object. */ @NonNull public Atsc3PlpSettings build() { return new Atsc3PlpSettings(mPlpId, mModulation, mInterleaveMode, mCodeRate, mFec); } } }