| /* |
| * 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.hardware.tv.tuner@1.1; |
| |
| import @1.0::Constant; |
| import @1.0::DemuxFilterMmtpRecordEvent; |
| import @1.0::DemuxFilterTsRecordEvent; |
| import @1.0::DemuxScIndex; |
| import @1.0::FrontendAtsc3Bandwidth; |
| import @1.0::FrontendAtsc3Modulation; |
| import @1.0::FrontendAtsc3TimeInterleaveMode; |
| import @1.0::FrontendAtscModulation; |
| import @1.0::FrontendDvbcModulation; |
| import @1.0::FrontendDvbtBandwidth; |
| import @1.0::FrontendDvbcSpectralInversion; |
| import @1.0::FrontendDvbsModulation; |
| import @1.0::FrontendDvbtConstellation; |
| import @1.0::FrontendDvbtTransmissionMode; |
| import @1.0::FrontendDvbtGuardInterval; |
| import @1.0::FrontendInnerFec; |
| import @1.0::FrontendIsdbs3Modulation; |
| import @1.0::FrontendIsdbsModulation; |
| import @1.0::FrontendIsdbtBandwidth; |
| import @1.0::FrontendIsdbtGuardInterval; |
| import @1.0::FrontendIsdbtMode; |
| import @1.0::FrontendIsdbtModulation; |
| import @1.0::FrontendScanMessageType; |
| import @1.0::FrontendStatusType; |
| import @1.0::FrontendType; |
| import android.hidl.safe_union@1.0; |
| import android.hidl.safe_union@1.0::Monostate; |
| |
| @export |
| enum Constant : @1.0::Constant { |
| /** |
| * An invalid mpuSequenceNumber in DemuxFilterRecordEventExt. |
| */ |
| INVALID_MMTP_RECORD_EVENT_MPT_SEQUENCE_NUM = 0xFFFFFFFF, |
| /** |
| * An invalid first macroblock address in DemuxFilterRecordEventExt. |
| */ |
| INVALID_FIRST_MACROBLOCK_IN_SLICE = 0xFFFFFFFF, |
| /** |
| * An invalid frenquency that can be used as the default value of the frontend setting. |
| */ |
| INVALID_FRONTEND_SETTING_FREQUENCY = 0xFFFFFFFF, |
| /** |
| * An invalid context id that can be used as the default value of the unconfigured id. It can |
| * be used to reset the configured ip context id. |
| */ |
| INVALID_IP_FILTER_CONTEXT_ID = 0xFFFFFFFF, |
| /** |
| * An invalid local transport stream id used as the return value on a failed operation of |
| * IFrontend.linkCiCam. |
| */ |
| INVALID_LTS_ID = 0xFFFFFFFF, |
| }; |
| |
| @export |
| enum Constant64Bit : uint64_t { |
| /** |
| * An invalid 64-bit Filter ID. |
| */ |
| INVALID_FILTER_ID_64BIT = 0xFFFFFFFFFFFFFFFF, |
| /** |
| * An invalid 64-bit AV sync hardware ID. |
| */ |
| INVALID_AV_SYNC_ID_64BIT = 0xFFFFFFFFFFFFFFFF, |
| /** |
| * An invalid pts. |
| */ |
| INVALID_PRESENTATION_TIME_STAMP = 0xFFFFFFFFFFFFFFFF, |
| }; |
| |
| /** |
| * Extended Demux Filter Record Event. |
| */ |
| struct DemuxFilterRecordEventExt { |
| /** |
| * The Presentation Time Stamp(PTS) for the audio or video frame. It is based on 90KHz |
| * and has the same format as the PTS in ISO/IEC 13818-1. |
| */ |
| uint64_t pts; |
| |
| /** |
| * MPU sequence number of the filtered data. This is only used for MMTP. |
| */ |
| uint32_t mpuSequenceNumber; |
| |
| /** |
| * Specifies the address of the first macroblock in the slice defined in ITU-T Rec. H.264. |
| */ |
| uint32_t firstMbInSlice; |
| }; |
| |
| /** |
| * Extended Demux Filter Event. |
| */ |
| struct DemuxFilterEventExt { |
| safe_union Event { |
| /** |
| * No extended record filter Event. This is used by the tsRecord or mmtpRecord filter event |
| * that does not contain the DemuxFilterRecordEventExt information. |
| */ |
| Monostate noinit; |
| |
| DemuxFilterRecordEventExt tsRecord; |
| |
| DemuxFilterRecordEventExt mmtpRecord; |
| }; |
| |
| /** |
| * An array of events |
| */ |
| vec<Event> events; |
| }; |
| |
| typedef FrontendDvbcSpectralInversion FrontendSpectralInversion; |
| |
| /** |
| * Scan type for a DVBS Frontend. |
| */ |
| @export |
| enum FrontendDvbsScanType : uint32_t { |
| UNDEFINED = 0, |
| DIRECT, |
| DISEQC, |
| UNICABLE, |
| JESS, |
| }; |
| |
| /** |
| * AFT flag for an Analog Frontend. |
| */ |
| @export |
| enum FrontendAnalogAftFlag : uint32_t { |
| UNDEFINED, |
| AFT_TRUE, |
| AFT_FALSE, |
| }; |
| |
| /** |
| * Time Interleave Mode for DVBC Frontend. |
| */ |
| @export |
| enum FrontendCableTimeInterleaveMode : uint32_t { |
| UNDEFINED = 0, |
| AUTO = 1 << 0, |
| INTERLEAVING_128_1_0 = 1 << 1, |
| INTERLEAVING_128_1_1 = 1 << 2, |
| INTERLEAVING_64_2 = 1 << 3, |
| INTERLEAVING_32_4 = 1 << 4, |
| INTERLEAVING_16_8 = 1 << 5, |
| INTERLEAVING_8_16 = 1 << 6, |
| INTERLEAVING_128_2 = 1 << 7, |
| INTERLEAVING_128_3 = 1 << 8, |
| INTERLEAVING_128_4 = 1 << 9, |
| }; |
| |
| /** |
| * Extended Transmission Mode for DVBT. |
| */ |
| @export |
| enum FrontendDvbtTransmissionMode : @1.0::FrontendDvbtTransmissionMode { |
| MODE_8K_E = 1 << 7, |
| MODE_16K_E = 1 << 8, |
| MODE_32K_E = 1 << 9, |
| }; |
| |
| /** |
| * Extended Constellation for DVBT. |
| */ |
| @export |
| enum FrontendDvbtConstellation : @1.0::FrontendDvbtConstellation { |
| CONSTELLATION_QPSK_R = 1 << 5, |
| CONSTELLATION_16QAM_R = 1 << 6, |
| CONSTELLATION_64QAM_R = 1 << 7, |
| CONSTELLATION_256QAM_R = 1 << 8, |
| }; |
| |
| /** |
| * Extended Signal Settings for a DVBS Frontend. |
| */ |
| struct FrontendDvbsSettingsExt1_1 { |
| FrontendDvbsScanType scanType; |
| |
| bool isDiseqcRxMessage; |
| }; |
| |
| /** |
| * Extended Signal Settings for a DVBT Frontend. |
| */ |
| struct FrontendDvbtSettingsExt1_1 { |
| FrontendDvbtConstellation constellation; |
| |
| FrontendDvbtTransmissionMode transmissionMode; |
| }; |
| |
| /** |
| * Extended Signal Settings for an Analog Frontend. |
| */ |
| struct FrontendAnalogSettingsExt1_1 { |
| FrontendAnalogAftFlag aftFlag; |
| }; |
| |
| /** |
| * Extended Signal Settings for DVBC Frontend. |
| */ |
| struct FrontendDvbcSettingsExt1_1 { |
| FrontendCableTimeInterleaveMode interleaveMode; |
| }; |
| |
| /** |
| * Extended Signal Settings for Frontend. |
| */ |
| struct FrontendSettingsExt1_1 { |
| uint32_t endFrequency; |
| |
| FrontendSpectralInversion inversion; |
| |
| safe_union SettingsExt { |
| Monostate noinit; |
| |
| FrontendAnalogSettingsExt1_1 analog; |
| |
| FrontendDvbcSettingsExt1_1 dvbc; |
| |
| FrontendDvbsSettingsExt1_1 dvbs; |
| |
| FrontendDvbtSettingsExt1_1 dvbt; |
| |
| FrontendDtmbSettings dtmb; |
| } settingExt; |
| }; |
| |
| /** |
| * Extended Frontend Type. |
| */ |
| @export |
| enum FrontendType : @1.0::FrontendType { |
| /** |
| * DTMB (Digital Terrestrial Multimedia Broadcast) standard. |
| */ |
| DTMB, |
| }; |
| |
| /** |
| * Bandwidth Type for DTMB. |
| */ |
| @export |
| enum FrontendDtmbBandwidth : uint32_t { |
| UNDEFINED = 0, |
| /** |
| * hardware is able to detect and set Bandwidth automatically |
| */ |
| AUTO = 1 << 0, |
| BANDWIDTH_8MHZ = 1 << 1, |
| BANDWIDTH_6MHZ = 1 << 2, |
| }; |
| |
| /** |
| * TimeInterleaveMode Type for DTMB. |
| */ |
| @export |
| enum FrontendDtmbTimeInterleaveMode : uint32_t { |
| UNDEFINED = 0, |
| /** |
| * hardware is able to detect and set time interleave mode automatically |
| */ |
| AUTO = 1 << 0, |
| TIMER_INT_240 = 1 << 1, |
| TIMER_INT_720 = 1 << 2, |
| }; |
| |
| /** |
| * FrontendDtmbModulation Type for DTMB. |
| */ |
| @export |
| enum FrontendDtmbModulation : uint32_t { |
| UNDEFINED = 0, |
| /** |
| * hardware is able to detect and set Constellation automatically |
| */ |
| AUTO = 1 << 0, |
| CONSTELLATION_4QAM = 1 << 1, |
| CONSTELLATION_4QAM_NR = 1 << 2, |
| CONSTELLATION_16QAM = 1 << 3, |
| CONSTELLATION_32QAM = 1 << 4, |
| CONSTELLATION_64QAM = 1 << 5, |
| }; |
| |
| /** |
| * CODERATE Type for DTMB. |
| */ |
| @export |
| enum FrontendDtmbCodeRate : uint32_t { |
| UNDEFINED = 0, |
| /** |
| * hardware is able to detect and set code rate automatically |
| */ |
| AUTO = 1 << 0, |
| CODERATE_2_5 = 1 << 1, |
| CODERATE_3_5 = 1 << 2, |
| CODERATE_4_5 = 1 << 3, |
| }; |
| |
| /** |
| * Guard Interval Type for DTMB. |
| */ |
| @export |
| enum FrontendDtmbGuardInterval : uint32_t { |
| UNDEFINED = 0, |
| /** |
| * hardware is able to detect and set Guard Interval automatically |
| */ |
| AUTO = 1 << 0, |
| PN_420_VARIOUS = 1 << 1, |
| PN_595_CONST = 1 << 2, |
| PN_945_VARIOUS = 1 << 3, |
| PN_420_CONST = 1 << 4, |
| PN_945_CONST = 1 << 5, |
| PN_RESERVED = 1 << 6, |
| }; |
| |
| /** |
| * Transmission Mode for DTMB. |
| */ |
| @export |
| enum FrontendDtmbTransmissionMode : uint32_t { |
| UNDEFINED = 0, |
| /** |
| * hardware is able to detect and set Transmission Mode automatically |
| */ |
| AUTO = 1 << 0, |
| C1 = 1 << 1, |
| C3780 = 1 << 2, |
| }; |
| |
| /** |
| * Signal Setting for DTMB Frontend. |
| */ |
| struct FrontendDtmbSettings { |
| uint32_t frequency; |
| |
| FrontendDtmbTransmissionMode transmissionMode; |
| |
| FrontendDtmbBandwidth bandwidth; |
| |
| FrontendDtmbModulation modulation; |
| |
| FrontendDtmbCodeRate codeRate; |
| |
| FrontendDtmbGuardInterval guardInterval; |
| |
| FrontendDtmbTimeInterleaveMode interleaveMode; |
| }; |
| |
| /** |
| * Capabilities for DTMB Frontend. |
| */ |
| struct FrontendDtmbCapabilities { |
| bitfield<FrontendDtmbTransmissionMode> transmissionModeCap; |
| |
| bitfield<FrontendDtmbBandwidth> bandwidthCap; |
| |
| bitfield<FrontendDtmbModulation> modulationCap; |
| |
| bitfield<FrontendDtmbCodeRate> codeRateCap; |
| |
| bitfield<FrontendDtmbGuardInterval> guardIntervalCap; |
| |
| bitfield<FrontendDtmbTimeInterleaveMode> interleaveModeCap; |
| }; |
| |
| safe_union FrontendModulation { |
| @1.0::FrontendDvbcModulation dvbc; |
| |
| @1.0::FrontendDvbsModulation dvbs; |
| |
| FrontendDvbtConstellation dvbt; |
| |
| @1.0::FrontendIsdbsModulation isdbs; |
| |
| @1.0::FrontendIsdbs3Modulation isdbs3; |
| |
| @1.0::FrontendIsdbtModulation isdbt; |
| |
| @1.0::FrontendAtscModulation atsc; |
| |
| @1.0::FrontendAtsc3Modulation atsc3; |
| |
| FrontendDtmbModulation dtmb; |
| }; |
| |
| safe_union FrontendInterleaveMode { |
| @1.0::FrontendAtsc3TimeInterleaveMode atsc3; |
| |
| FrontendCableTimeInterleaveMode dvbc; |
| |
| FrontendDtmbTimeInterleaveMode dtmb; |
| }; |
| |
| @export |
| enum FrontendInnerFec : @1.0::FrontendInnerFec { |
| FEC_2_15 = 1 << 36, |
| FEC_3_15 = 1 << 37, |
| FEC_5_15 = 1 << 38, |
| FEC_6_15 = 1 << 39, |
| FEC_9_15 = 1 << 40, |
| FEC_10_15 = 1 << 41, |
| FEC_12_15 = 1 << 42, |
| FEC_13_15 = 1 << 43, |
| FEC_18_30 = 1 << 44, |
| FEC_20_30 = 1 << 45, |
| FEC_90_180 = 1 << 46, |
| FEC_96_180 = 1 << 47, |
| FEC_104_180 = 1 << 48, |
| FEC_128_180 = 1 << 49, |
| FEC_132_180 = 1 << 50, |
| FEC_135_180 = 1 << 51, |
| FEC_140_180 = 1 << 52, |
| }; |
| |
| safe_union FrontendBandwidth { |
| @1.0::FrontendAtsc3Bandwidth atsc3; |
| |
| @1.0::FrontendDvbtBandwidth dvbt; |
| |
| @1.0::FrontendIsdbtBandwidth isdbt; |
| |
| FrontendDtmbBandwidth dtmb; |
| }; |
| |
| safe_union FrontendGuardInterval { |
| @1.0::FrontendDvbtGuardInterval dvbt; |
| |
| @1.0::FrontendIsdbtGuardInterval isdbt; |
| |
| FrontendDtmbGuardInterval dtmb; |
| }; |
| |
| safe_union FrontendTransmissionMode { |
| FrontendDvbtTransmissionMode dvbt; |
| |
| @1.0::FrontendIsdbtMode isdbt; |
| |
| FrontendDtmbTransmissionMode dtmb; |
| }; |
| |
| @export |
| enum FrontendStatusTypeExt1_1 : uint32_t { |
| /** |
| * Modulation Types. |
| */ |
| MODULATIONS = @1.0::FrontendStatusType:ATSC3_PLP_INFO + 1, |
| /** |
| * Bit Error Ratios. |
| */ |
| BERS, |
| /** |
| * Code Rates. |
| */ |
| CODERATES, |
| /** |
| * Extended Bandwidth. |
| */ |
| BANDWIDTH, |
| /** |
| * Extended Guard Intervals. |
| */ |
| GUARD_INTERVAL, |
| /** |
| * Extended Transmission Mode. |
| */ |
| TRANSMISSION_MODE, |
| /** |
| * Uncorrectable Error Counts of the frontend's Physical Layer Pipe (PLP) |
| * since the last tune operation. |
| */ |
| UEC, |
| /** |
| * DVB-T2 System Id. |
| */ |
| T2_SYSTEM_ID, |
| /** |
| * Frontend Interleaving Modes. |
| */ |
| INTERLEAVINGS, |
| /** |
| * Segments in ISDB-T Specification of all the channels. |
| */ |
| ISDBT_SEGMENTS, |
| /** |
| * Transport Stream Data Rate in BPS of the current channel. |
| */ |
| TS_DATA_RATES, |
| }; |
| |
| safe_union FrontendStatusExt1_1 { |
| /** |
| * Extended modulation status. |
| */ |
| vec<FrontendModulation> modulations; |
| |
| /** |
| * Extended bit error ratio status. |
| */ |
| vec<uint32_t> bers; |
| |
| /** |
| * Extended code rate status. |
| */ |
| vec<FrontendInnerFec> codeRates; |
| |
| /** |
| * Extended bandwidth status. |
| */ |
| FrontendBandwidth bandwidth; |
| |
| /** |
| * Extended guard interval status. |
| */ |
| FrontendGuardInterval interval; |
| |
| /** |
| * Extended transmission mode status. |
| */ |
| FrontendTransmissionMode transmissionMode; |
| |
| /** |
| * Uncorrectable Error Counts of the frontend's Physical Layer Pipe (PLP) |
| * since the last tune operation. |
| */ |
| uint32_t uec; |
| |
| /** |
| * The current DVB-T2 system id status. |
| */ |
| uint16_t systemId; |
| |
| /** |
| * Frontend Interleaving Modes. |
| */ |
| vec<FrontendInterleaveMode> interleaving; |
| |
| /** |
| * Segments in ISDB-T Specification of all the channels. |
| */ |
| vec<uint8_t> isdbtSegment; |
| |
| /** |
| * Transport Stream Data Rate in BPS of the current channel. |
| */ |
| vec<uint32_t> tsDataRate; |
| }; |
| |
| enum FrontendScanMessageTypeExt1_1 : uint32_t { |
| MODULATION = @1.0::FrontendScanMessageType:ATSC3_PLP_INFO + 1, |
| HIGH_PRIORITY, |
| }; |
| |
| safe_union FrontendScanMessageExt1_1 { |
| FrontendModulation modulation; |
| |
| bool isHighPriority; |
| }; |
| |
| @export |
| enum VideoStreamType : uint32_t { |
| UNDEFINED, |
| /* |
| * ITU-T | ISO/IEC Reserved |
| */ |
| RESERVED, |
| /* |
| * ISO/IEC 11172 |
| */ |
| MPEG1, |
| /* |
| * ITU-T Rec.H.262 and ISO/IEC 13818-2 |
| */ |
| MPEG2, |
| /* |
| * ISO/IEC 14496-2 (MPEG-4 H.263 based video) |
| */ |
| MPEG4P2, |
| /* |
| * ITU-T Rec.H.264 and ISO/IEC 14496-10 |
| */ |
| AVC, |
| /* |
| * ITU-T Rec. H.265 and ISO/IEC 23008-2 |
| */ |
| HEVC, |
| /* |
| * Microsoft VC.1 |
| */ |
| VC1, |
| /* |
| * Google VP8 |
| */ |
| VP8, |
| /* |
| * Google VP9 |
| */ |
| VP9, |
| /* |
| * AOMedia Video 1 |
| */ |
| AV1, |
| /* |
| * Chinese Standard |
| */ |
| AVS, |
| /* |
| * New Chinese Standard |
| */ |
| AVS2, |
| }; |
| |
| @export |
| enum AudioStreamType : uint32_t { |
| UNDEFINED, |
| /* |
| * Uncompressed Audio |
| */ |
| PCM, |
| /* |
| * MPEG Audio Layer III versions |
| */ |
| MP3, |
| /* |
| * ISO/IEC 11172 Audio |
| */ |
| MPEG1, |
| /* |
| * ISO/IEC 13818-3 |
| */ |
| MPEG2, |
| /* |
| * ISO/IEC 23008-3 (MPEG-H Part 3) |
| */ |
| MPEGH, |
| /* |
| * ISO/IEC 14496-3 |
| */ |
| AAC, |
| /* |
| * Dolby Digital |
| */ |
| AC3, |
| /* |
| * Dolby Digital Plus |
| */ |
| EAC3, |
| /* |
| * Dolby AC-4 |
| */ |
| AC4, |
| /* |
| * Basic DTS |
| */ |
| DTS, |
| /* |
| * High Resolution DTS |
| */ |
| DTS_HD, |
| /* |
| * Windows Media Audio |
| */ |
| WMA, |
| /* |
| * Opus Interactive Audio Codec |
| */ |
| OPUS, |
| /* |
| * VORBIS Interactive Audio Codec |
| */ |
| VORBIS, |
| /* |
| * SJ/T 11368-2006 |
| */ |
| DRA, |
| }; |
| |
| /** |
| * Stream type for A/V filter. |
| */ |
| safe_union AvStreamType { |
| VideoStreamType video; |
| |
| AudioStreamType audio; |
| }; |
| |
| /** |
| * Indexes can be tagged by start point of slice groups according to ISO/IEC 14496-10. |
| */ |
| @export |
| enum DemuxScIndex : @1.0::DemuxScIndex { |
| /** |
| * All blocks are coded as I blocks. |
| */ |
| I_SLICE = 1 << 4, |
| /** |
| * Blocks are coded as I or P blocks. |
| */ |
| P_SLICE = 1 << 5, |
| /** |
| * Blocks are coded as I, P or B blocks. |
| */ |
| B_SLICE = 1 << 6, |
| /** |
| * A so-called switching I slice that is coded. |
| */ |
| SI_SLICE = 1 << 7, |
| /** |
| * A so-called switching P slice that is coded. |
| */ |
| SP_SLICE = 1 << 8, |
| }; |