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

Commit ac4e4189 authored by Ray Essick's avatar Ray Essick
Browse files

Media metrics for android.media.MediaRecorder

underlying collection of MediaRecorder metrics for getMetrics() API
and for media metrics cloud analysis.

Bug:  35150984
Test: hacked CTS, observation of 'dumpsys media.metrics'
Change-Id: Ife2ab06158b0015549ed17d52d7f4c35781f5e0f
parent 36b31c87
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ public:
    virtual status_t setClientName(const String16& clientName) = 0;
    virtual status_t prepare() = 0;
    virtual status_t getMaxAmplitude(int* max) = 0;
    virtual status_t getMetrics(Parcel *reply) = 0;
    virtual status_t start() = 0;
    virtual status_t stop() = 0;
    virtual status_t reset() = 0;
+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ struct MediaRecorderBase {
    virtual status_t close() = 0;
    virtual status_t reset() = 0;
    virtual status_t getMaxAmplitude(int *max) = 0;
    virtual status_t getMetrics(Parcel *reply) = 0;
    virtual status_t dump(int fd, const Vector<String16>& args) const = 0;
    virtual status_t setInputSurface(const sp<PersistentSurface>& surface) = 0;
    virtual sp<IGraphicBufferProducer> querySurfaceMediaSource() const = 0;
+1 −0
Original line number Diff line number Diff line
@@ -249,6 +249,7 @@ public:
    void        notify(int msg, int ext1, int ext2);
    status_t    setInputSurface(const sp<PersistentSurface>& surface);
    sp<IGraphicBufferProducer>     querySurfaceMediaSourceFromMediaServer();
    status_t    getMetrics(Parcel *reply);

private:
    void                    doCleanUp();
+20 −1
Original line number Diff line number Diff line
@@ -59,7 +59,9 @@ enum {
    SET_LISTENER,
    SET_CLIENT_NAME,
    PAUSE,
    RESUME
    RESUME,
    GET_METRICS,

};

class BpMediaRecorder: public BpInterface<IMediaRecorder>
@@ -261,6 +263,18 @@ public:
        return reply.readInt32();
    }

    status_t getMetrics(Parcel* reply)
    {
        ALOGV("getMetrics");
        Parcel data;
        data.writeInterfaceToken(IMediaRecorder::getInterfaceDescriptor());
        status_t ret = remote()->transact(GET_METRICS, data, reply);
        if (ret == NO_ERROR) {
            return OK;
        }
        return UNKNOWN_ERROR;
    }

    status_t start()
    {
        ALOGV("start");
@@ -397,6 +411,11 @@ status_t BnMediaRecorder::onTransact(
            reply->writeInt32(ret);
            return NO_ERROR;
        } break;
        case GET_METRICS: {
            ALOGV("GET_METRICS");
            status_t ret = getMetrics(reply);
            return ret;
        } break;
        case SET_VIDEO_SOURCE: {
            ALOGV("SET_VIDEO_SOURCE");
            CHECK_INTERFACE(IMediaRecorder, data, reply);
+11 −0
Original line number Diff line number Diff line
@@ -513,6 +513,17 @@ status_t MediaRecorder::getMaxAmplitude(int* max)
    return ret;
}

status_t MediaRecorder::getMetrics(Parcel *reply) {

    ALOGV("getMetrics");

    status_t ret = mMediaRecorder->getMetrics(reply);
    if (OK != ret) {
        ALOGE("getMetrics failed: %d", ret);
    }
    return ret;
}

status_t MediaRecorder::start()
{
    ALOGV("start");
Loading