diff --git a/media/libmedia/IMediaExtractor.cpp b/media/libmedia/IMediaExtractor.cpp index 738985161e..39caf53004 100644 --- a/media/libmedia/IMediaExtractor.cpp +++ b/media/libmedia/IMediaExtractor.cpp @@ -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); } diff --git a/media/libmedia/include/android/IMediaExtractor.h b/media/libmedia/include/android/IMediaExtractor.h index 75e4ee2e59..3e035ad304 100644 --- a/media/libmedia/include/android/IMediaExtractor.h +++ b/media/libmedia/include/android/IMediaExtractor.h @@ -62,7 +62,7 @@ public: virtual status_t setMediaCas(const HInterfaceToken &casToken) = 0; - virtual const char * name() = 0; + virtual String8 name() = 0; }; diff --git a/media/libstagefright/RemoteMediaExtractor.cpp b/media/libstagefright/RemoteMediaExtractor.cpp index c841d101ae..25e43c28e1 100644 --- a/media/libstagefright/RemoteMediaExtractor.cpp +++ b/media/libstagefright/RemoteMediaExtractor.cpp @@ -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()); } //////////////////////////////////////////////////////////////////////////////// diff --git a/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h b/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h index e33e303d91..2ce7bc7b6f 100644 --- a/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h +++ b/media/libstagefright/include/media/stagefright/RemoteMediaExtractor.h @@ -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;