diff --git a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl
index 2858565099..7936e59001 100644
--- a/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl
+++ b/tv/tuner/aidl/aidl_api/android.hardware.tv.tuner/current/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl
@@ -39,4 +39,5 @@ parcelable DemuxFilterSectionSettings {
boolean isCheckCrc;
boolean isRepeat;
boolean isRaw;
+ int bitWidthOfLengthField;
}
diff --git a/tv/tuner/aidl/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl b/tv/tuner/aidl/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl
index f6788ee131..aa30175823 100644
--- a/tv/tuner/aidl/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl
+++ b/tv/tuner/aidl/android/hardware/tv/tuner/DemuxFilterSectionSettings.aidl
@@ -19,7 +19,7 @@ package android.hardware.tv.tuner;
import android.hardware.tv.tuner.DemuxFilterSectionSettingsCondition;
/**
- * Filter Settings for Section data according to ISO/IEC 13818-1.
+ * Filter Settings for Section data according to ISO/IEC 13818-1 and ISO/IEC 23008-1.
* @hide
*/
@VintfStability
@@ -49,4 +49,12 @@ parcelable DemuxFilterSectionSettings {
* true if the filter send onFilterStatus instead of onFilterEvent.
*/
boolean isRaw;
+
+ /**
+ * The bit width of the MMTP (MPEG Media Transport Protocol) section message's length field
+ * according to ISO/IEC 23008-1.
+ *
+ * The filter uses this for CRC checking when isCheckCrc is true.
+ */
+ int bitWidthOfLengthField;
}
diff --git a/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h b/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h
index b6cc5f80b0..b73d59411b 100644
--- a/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h
+++ b/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h
@@ -954,6 +954,7 @@ struct TunerTestingConfigAidlReader1_0 {
settings.isCheckCrc = section->getIsCheckCrc();
settings.isRepeat = section->getIsRepeat();
settings.isRaw = section->getIsRaw();
+ settings.bitWidthOfLengthField = section->getBitWidthOfLengthField();
return settings;
}
diff --git a/tv/tuner/config/api/current.txt b/tv/tuner/config/api/current.txt
index db1d076e10..4d519d7cb5 100644
--- a/tv/tuner/config/api/current.txt
+++ b/tv/tuner/config/api/current.txt
@@ -477,9 +477,11 @@ package android.media.tuner.testing.configuration.V1_0 {
public class SectionFilterSettings {
ctor public SectionFilterSettings();
+ method @Nullable public java.math.BigInteger getBitWidthOfLengthField();
method @Nullable public boolean getIsCheckCrc();
method @Nullable public boolean getIsRaw();
method @Nullable public boolean getIsRepeat();
+ method public void setBitWidthOfLengthField(@Nullable java.math.BigInteger);
method public void setIsCheckCrc(@Nullable boolean);
method public void setIsRaw(@Nullable boolean);
method public void setIsRepeat(@Nullable boolean);
diff --git a/tv/tuner/config/tuner_testing_dynamic_configuration.xsd b/tv/tuner/config/tuner_testing_dynamic_configuration.xsd
index 54cedfcf6b..94f108b43a 100644
--- a/tv/tuner/config/tuner_testing_dynamic_configuration.xsd
+++ b/tv/tuner/config/tuner_testing_dynamic_configuration.xsd
@@ -226,6 +226,7 @@
+