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

Commit 54bd3c76 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: I794360a2df4d9f3144e4eeebb71e7f5dfd729b30
parents 420bbef9 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: