Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb8a3a1d authored by Hongguang Chen's avatar Hongguang Chen Committed by Automerger Merge Worker
Browse files

Merge "Check discriminator before accessing FrontendCapabilities information."...

Merge "Check discriminator before accessing FrontendCapabilities information." into sc-dev am: ad2a2ead

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/14940877

Change-Id: I5da51df2b0cd2f4678da06df7d518bb5d8c0db9d
parents e1b489fe ad2a2ead
Loading
Loading
Loading
Loading
+88 −60
Original line number Diff line number Diff line
@@ -445,52 +445,70 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo)
    TunerFrontendCapabilities caps;
    switch (halInfo.type) {
        case FrontendType::ANALOG: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::analogCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendAnalogCapabilities analogCaps{
                    .typeCap = (int)halInfo.frontendCaps.analogCaps().typeCap,
                    .sifStandardCap = (int)halInfo.frontendCaps.analogCaps().sifStandardCap,
                };
                caps.set<TunerFrontendCapabilities::analogCaps>(analogCaps);
            }
            break;
        }
        case FrontendType::ATSC: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::atscCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendAtscCapabilities atscCaps{
                    .modulationCap = (int)halInfo.frontendCaps.atscCaps().modulationCap,
                };
                caps.set<TunerFrontendCapabilities::atscCaps>(atscCaps);
            }
            break;
        }
        case FrontendType::ATSC3: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::atsc3Caps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendAtsc3Capabilities atsc3Caps{
                    .bandwidthCap = (int)halInfo.frontendCaps.atsc3Caps().bandwidthCap,
                    .modulationCap = (int)halInfo.frontendCaps.atsc3Caps().modulationCap,
                    .timeInterleaveModeCap =
                            (int)halInfo.frontendCaps.atsc3Caps().timeInterleaveModeCap,
                    .codeRateCap = (int)halInfo.frontendCaps.atsc3Caps().codeRateCap,
                .demodOutputFormatCap = (int)halInfo.frontendCaps.atsc3Caps().demodOutputFormatCap,
                    .demodOutputFormatCap
                        = (int)halInfo.frontendCaps.atsc3Caps().demodOutputFormatCap,
                    .fecCap = (int)halInfo.frontendCaps.atsc3Caps().fecCap,
                };
                caps.set<TunerFrontendCapabilities::atsc3Caps>(atsc3Caps);
            }
            break;
        }
        case FrontendType::DVBC: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbcCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendCableCapabilities cableCaps{
                    .modulationCap = (int)halInfo.frontendCaps.dvbcCaps().modulationCap,
                    .codeRateCap = (int64_t)halInfo.frontendCaps.dvbcCaps().fecCap,
                    .annexCap = (int)halInfo.frontendCaps.dvbcCaps().annexCap,
                };
                caps.set<TunerFrontendCapabilities::cableCaps>(cableCaps);
            }
            break;
        }
        case FrontendType::DVBS: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbsCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendDvbsCapabilities dvbsCaps{
                    .modulationCap = (int)halInfo.frontendCaps.dvbsCaps().modulationCap,
                    .codeRateCap = (long)halInfo.frontendCaps.dvbsCaps().innerfecCap,
                    .standard = (int)halInfo.frontendCaps.dvbsCaps().standard,
                };
                caps.set<TunerFrontendCapabilities::dvbsCaps>(dvbsCaps);
            }
            break;
        }
        case FrontendType::DVBT: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbtCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendDvbtCapabilities dvbtCaps{
                    .transmissionModeCap = (int)halInfo.frontendCaps.dvbtCaps().transmissionModeCap,
                    .bandwidthCap = (int)halInfo.frontendCaps.dvbtCaps().bandwidthCap,
@@ -502,25 +520,34 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo)
                    .isMisoSupported = (bool)halInfo.frontendCaps.dvbtCaps().isMisoSupported,
                };
                caps.set<TunerFrontendCapabilities::dvbtCaps>(dvbtCaps);
            }
            break;
        }
        case FrontendType::ISDBS: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbsCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendIsdbsCapabilities isdbsCaps{
                    .modulationCap = (int)halInfo.frontendCaps.isdbsCaps().modulationCap,
                    .codeRateCap = (int)halInfo.frontendCaps.isdbsCaps().coderateCap,
                };
                caps.set<TunerFrontendCapabilities::isdbsCaps>(isdbsCaps);
            }
            break;
        }
        case FrontendType::ISDBS3: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbs3Caps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendIsdbs3Capabilities isdbs3Caps{
                    .modulationCap = (int)halInfo.frontendCaps.isdbs3Caps().modulationCap,
                    .codeRateCap = (int)halInfo.frontendCaps.isdbs3Caps().coderateCap,
                };
                caps.set<TunerFrontendCapabilities::isdbs3Caps>(isdbs3Caps);
            }
            break;
        }
        case FrontendType::ISDBT: {
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbtCaps
                    == halInfo.frontendCaps.getDiscriminator()) {
                TunerFrontendIsdbtCapabilities isdbtCaps{
                    .modeCap = (int)halInfo.frontendCaps.isdbtCaps().modeCap,
                    .bandwidthCap = (int)halInfo.frontendCaps.isdbtCaps().bandwidthCap,
@@ -529,6 +556,7 @@ TunerFrontendInfo TunerService::convertToAidlFrontendInfo(FrontendInfo halInfo)
                    .guardIntervalCap = (int)halInfo.frontendCaps.isdbtCaps().guardIntervalCap,
                };
                caps.set<TunerFrontendCapabilities::isdbtCaps>(isdbtCaps);
            }
            break;
        }
        default: