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

Commit dd43c6a3 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: I13dc5725c89f5f2f602535dc4ef6cb3630b06b7a
parents 247e39a5 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: