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

Commit e4f4b79b authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Implement name() and flags() in IMediaExtractor

These were always present in the interface, but not actually implemented.
Now name and flags are passed through the Binder interface to the client.
The name() method was changed to String8 from "const char *" to avoid
ambiguity regarding who owns the string.

Bug: 143263164
Test: manual
Change-Id: I503d964b70f0affdedba23aa7da530164c14caf1
parent 255f610f
Loading
Loading
Loading
Loading
+31 −5
Original line number Diff line number Diff line
@@ -107,8 +107,15 @@ public:
    }

    virtual uint32_t flags() const {
        ALOGV("flags NOT IMPLEMENTED");
        return 0;
        ALOGV("flags");
        Parcel data, reply;
        data.writeInterfaceToken(BpMediaExtractor::getInterfaceDescriptor());
        status_t ret = remote()->transact(FLAGS, data, &reply);
        int flgs = 0;
        if (ret == NO_ERROR) {
            flgs = reply.readUint32();
        }
        return flgs;
    }

    virtual status_t setMediaCas(const HInterfaceToken &casToken) {
@@ -125,9 +132,15 @@ public:
        return reply.readInt32();
    }

    virtual const char * name() {
        ALOGV("name NOT IMPLEMENTED");
        return NULL;
    virtual String8 name() {
        Parcel data, reply;
        data.writeInterfaceToken(BpMediaExtractor::getInterfaceDescriptor());
        status_t ret = remote()->transact(NAME, data, &reply);
        String8 nm;
        if (ret == NO_ERROR) {
            nm = reply.readString8();
        }
        return nm;
    }
};

@@ -192,6 +205,12 @@ status_t BnMediaExtractor::onTransact(
            status_t ret = getMetrics(reply);
            return ret;
        }
        case FLAGS: {
            ALOGV("flags");
            CHECK_INTERFACE(IMediaExtractor, data, reply);
            reply->writeUint32(this->flags());
            return NO_ERROR;
        }
        case SETMEDIACAS: {
            ALOGV("setMediaCas");
            CHECK_INTERFACE(IMediaExtractor, data, reply);
@@ -206,6 +225,13 @@ status_t BnMediaExtractor::onTransact(
            reply->writeInt32(setMediaCas(casToken));
            return OK;
        }
        case NAME: {
            ALOGV("name");
            CHECK_INTERFACE(IMediaExtractor, data, reply);
            String8 nm = name();
            reply->writeString8(nm);
            return NO_ERROR;
        }
        default:
            return BBinder::onTransact(code, data, reply, flags);
    }
+1 −1
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ public:

    virtual status_t setMediaCas(const HInterfaceToken &casToken) = 0;

    virtual const char * name() = 0;
    virtual String8 name() = 0;
};


+2 −2
Original line number Diff line number Diff line
@@ -139,8 +139,8 @@ status_t RemoteMediaExtractor::setMediaCas(const HInterfaceToken &casToken) {
    return mExtractor->setMediaCas((uint8_t*)casToken.data(), casToken.size());
}

const char * RemoteMediaExtractor::name() {
    return mExtractor->name();
String8 RemoteMediaExtractor::name() {
    return String8(mExtractor->name());
}

////////////////////////////////////////////////////////////////////////////////
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ public:
    virtual status_t getMetrics(Parcel *reply);
    virtual uint32_t flags() const;
    virtual status_t setMediaCas(const HInterfaceToken &casToken);
    virtual const char * name();
    virtual String8 name();

private:
    MediaExtractor *mExtractor;