blob: f86eccf087d94c8eb89bd2453b50f66c79165853 [file] [log] [blame]
/*
* 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);
}
}
}