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

Commit 8ceba759 authored by Kyle Zhang's avatar Kyle Zhang
Browse files

IDrm metrics to statsd

Add statsd pushers
statsd_mediadrm_new, statsd_mediadrm_session, statsd_mediadrm_err
that log IDrm metrics to statsd in mediametrics.

Bug: 249941041
Test: m mediametrics
Change-Id: Ia0fdd28aa5935809a0e961ef3098bf9354dede40
parent f521e485
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -87,6 +87,9 @@ bool dump2Statsd(
        { "nuplayer", statsd_nuplayer },
        { "nuplayer2", statsd_nuplayer },
        { "recorder", statsd_recorder },
        { "media_drm_created", statsd_media_drm_created },
        { "media_drm_session_opened", statsd_media_drm_session_opened },
        { "media_drm_errored", statsd_media_drm_errored },
    };
    return dump2StatsdInternal(statsd_pushers, item, statsdLog);
}
+3 −0
Original line number Diff line number Diff line
@@ -32,6 +32,9 @@ extern statsd_pusher statsd_audiotrack;
extern statsd_pusher statsd_codec;
extern statsd_pusher statsd_extractor;
extern statsd_pusher statsd_mediaparser;
extern statsd_pusher statsd_media_drm_created;
extern statsd_pusher statsd_media_drm_session_opened;
extern statsd_pusher statsd_media_drm_errored;

extern statsd_pusher statsd_nuplayer;
extern statsd_pusher statsd_recorder;
+108 −0
Original line number Diff line number Diff line
@@ -233,4 +233,112 @@ bool statsd_mediadrm_puller(
    return true;
}

bool statsd_media_drm_created(const std::shared_ptr<const mediametrics::Item>& item,
        const std::shared_ptr<mediametrics::StatsdLog>& statsdLog)
{
    int64_t uuid_lsb = -1;
    if (!item->getInt64("uuid_lsb", &uuid_lsb)) return false;
    int64_t uuid_msb = -1;
    if (!item->getInt64("uuid_msb", &uuid_msb)) return false;
    int64_t object_nonce_lsb = -1;
    if (!item->getInt64("object_nonce_lsb", &object_nonce_lsb)) return false;
    int64_t object_nonce_msb = -1;
    if (!item->getInt64("object_nonce_msb", &object_nonce_msb)) return false;
    int64_t apex_version = -1;
    item->getInt64("apex_version", &apex_version);
    const int result = stats_write(
                stats::media_metrics::MEDIA_DRM_CREATED,
                uuid_lsb, uuid_msb, object_nonce_lsb,
                object_nonce_msb, apex_version);

    std::stringstream log;
    log << "result:" << result << " {"
            << " media_drm_created:"
            << stats::media_metrics::MEDIA_DRM_CREATED
            << " uuid_lsb:" << uuid_lsb
            << " uuid_msb:" << uuid_msb
            << " object_nonce_lsb:" << object_nonce_lsb
            << " object_nonce_msb:" << object_nonce_msb
            << " apex_version:" << apex_version
            << " }";
    statsdLog->log(stats::media_metrics::MEDIA_DRM_CREATED, log.str());
    return true;
}

bool statsd_media_drm_session_opened(const std::shared_ptr<const mediametrics::Item>& item,
        const std::shared_ptr<mediametrics::StatsdLog>& statsdLog)
{
    int64_t object_nonce_lsb = -1;
    if (!item->getInt64("object_nonce_lsb", &object_nonce_lsb)) return false;
    int64_t object_nonce_msb = -1;
    if (!item->getInt64("object_nonce_msb", &object_nonce_msb)) return false;
    int64_t session_nonce_lsb = -1;
    if (!item->getInt64("session_nonce_lsb", &session_nonce_lsb)) return false;
    int64_t session_nonce_msb = -1;
    if (!item->getInt64("session_nonce_msb", &session_nonce_msb)) return false;
    int32_t requested_security_level = -1;
    if (!item->getInt32("requested_security_level", &requested_security_level)) return false;
    int32_t opened_security_level = -1;
    if (!item->getInt32("opened_security_level", &opened_security_level)) return false;
    const int result = stats_write(
                stats::media_metrics::MEDIA_DRM_SESSION_OPENED, object_nonce_lsb,
                object_nonce_msb, session_nonce_lsb, session_nonce_msb,
                requested_security_level, opened_security_level);

    std::stringstream log;
    log << "result:" << result << " {"
            << " media_drm_session_opened:"
            << stats::media_metrics::MEDIA_DRM_SESSION_OPENED
            << " object_nonce_lsb:" << object_nonce_lsb
            << " object_nonce_msb:" << object_nonce_msb
            << " session_nonce_lsb:" << session_nonce_lsb
            << " session_nonce_msb:" << session_nonce_msb
            << " requested_security_level:" << requested_security_level
            << " opened_security_level:" << opened_security_level
            << " }";
    statsdLog->log(stats::media_metrics::MEDIA_DRM_SESSION_OPENED, log.str());
    return true;
}

bool statsd_media_drm_errored(const std::shared_ptr<const mediametrics::Item>& item,
        const std::shared_ptr<mediametrics::StatsdLog>& statsdLog)
{
    int64_t object_nonce_lsb = -1;
    if (!item->getInt64("object_nonce_lsb", &object_nonce_lsb)) return false;
    int64_t object_nonce_msb = -1;
    if (!item->getInt64("object_nonce_msb", &object_nonce_msb)) return false;
    int64_t session_nonce_lsb = 0;
    item->getInt64("session_nonce_lsb", &session_nonce_lsb);
    int64_t session_nonce_msb = 0;
    item->getInt64("session_nonce_msb", &session_nonce_msb);
    int32_t api = -1;
    if (!item->getInt32("api", &api)) return false;
    int32_t error_code = -1;
    if (!item->getInt32("error_code", &error_code)) return false;
    int32_t cdm_err = 0;
    item->getInt32("cdm_err", &cdm_err);
    int32_t oem_err = 0;
    item->getInt32("oem_err", &oem_err);
    const int result = stats_write(
                stats::media_metrics::MEDIA_DRM_ERRORED, object_nonce_lsb,
                object_nonce_msb, session_nonce_lsb, session_nonce_msb,
                api, error_code, cdm_err, oem_err);

    std::stringstream log;
    log << "result:" << result << " {"
            << " media_drm_errored:"
            << stats::media_metrics::MEDIA_DRM_ERRORED
            << " object_nonce_lsb:" << object_nonce_lsb
            << " object_nonce_msb:" << object_nonce_msb
            << " session_nonce_lsb:" << session_nonce_lsb
            << " session_nonce_msb:" << session_nonce_msb
            << " api:" << api
            << " error_code:" << error_code
            << " cdm_err:" << cdm_err
            << " oem_err:" << oem_err
            << " }";
    statsdLog->log(stats::media_metrics::MEDIA_DRM_ERRORED, log.str());
    return true;
}

} // namespace android