blob: dcf15118e9ea61045a6fb036b2095c60691962a4 [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;
/**
* Code rate for DVBS.
*
* @hide
*/
@SystemApi
public class DvbsCodeRate {
private final long mInnerFec;
private final boolean mIsLinear;
private final boolean mIsShortFrames;
private final int mBitsPer1000Symbol;
private DvbsCodeRate(long fec, boolean isLinear, boolean isShortFrames, int bitsPer1000Symbol) {
mInnerFec = fec;
mIsLinear = isLinear;
mIsShortFrames = isShortFrames;
mBitsPer1000Symbol = bitsPer1000Symbol;
}
/**
* Gets inner FEC.
*/
@FrontendSettings.InnerFec
public long getInnerFec() {
return mInnerFec;
}
/**
* Checks whether it's linear.
*/
public boolean isLinear() {
return mIsLinear;
}
/**
* Checks whether short frame enabled.
*/
public boolean isShortFrameEnabled() {
return mIsShortFrames;
}
/**
* Gets bits number in 1000 symbols. 0 by default.
*/
public int getBitsPer1000Symbol() {
return mBitsPer1000Symbol;
}
/**
* Creates a builder for {@link DvbsCodeRate}.
*/
@NonNull
public static Builder builder() {
return new Builder();
}
/**
* Builder for {@link DvbsCodeRate}.
*/
public static class Builder {
private long mFec;
private boolean mIsLinear;
private boolean mIsShortFrames;
private int mBitsPer1000Symbol;
private Builder() {
}
/**
* Sets inner FEC.
*/
@NonNull
public Builder setInnerFec(@FrontendSettings.InnerFec long fec) {
mFec = fec;
return this;
}
/**
* Sets whether it's linear.
*/
@NonNull
public Builder setLinear(boolean isLinear) {
mIsLinear = isLinear;
return this;
}
/**
* Sets whether short frame enabled.
*/
@NonNull
public Builder setShortFrameEnabled(boolean isShortFrames) {
mIsShortFrames = isShortFrames;
return this;
}
/**
* Sets bits number in 1000 symbols.
*/
@NonNull
public Builder setBitsPer1000Symbol(int bitsPer1000Symbol) {
mBitsPer1000Symbol = bitsPer1000Symbol;
return this;
}
/**
* Builds a {@link DvbsCodeRate} object.
*/
@NonNull
public DvbsCodeRate build() {
return new DvbsCodeRate(mFec, mIsLinear, mIsShortFrames, mBitsPer1000Symbol);
}
}
}