diff options
Diffstat (limited to 'media/libmedia/IMediaPlayerService.cpp')
-rw-r--r-- | media/libmedia/IMediaPlayerService.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/media/libmedia/IMediaPlayerService.cpp b/media/libmedia/IMediaPlayerService.cpp index 8d2c360..98f7ef1 100644 --- a/media/libmedia/IMediaPlayerService.cpp +++ b/media/libmedia/IMediaPlayerService.cpp @@ -36,6 +36,7 @@ enum { CREATE_MEDIA_RECORDER, CREATE_METADATA_RETRIEVER, CREATE_OMX, + SNOOP }; class BpMediaPlayerService: public BpInterface<IMediaPlayerService> @@ -114,6 +115,14 @@ public: return interface_cast<IMemory>(reply.readStrongBinder()); } + virtual sp<IMemory> snoop() + { + Parcel data, reply; + data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); + remote()->transact(SNOOP, data, &reply); + return interface_cast<IMemory>(reply.readStrongBinder()); + } + virtual sp<IOMX> createOMX() { Parcel data, reply; data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); @@ -178,6 +187,12 @@ status_t BnMediaPlayerService::onTransact( reply->writeStrongBinder(player->asBinder()); return NO_ERROR; } break; + case SNOOP: { + CHECK_INTERFACE(IMediaPlayerService, data, reply); + sp<IMemory> snooped_audio = snoop(); + reply->writeStrongBinder(snooped_audio->asBinder()); + return NO_ERROR; + } break; case CREATE_MEDIA_RECORDER: { CHECK_INTERFACE(IMediaPlayerService, data, reply); pid_t pid = data.readInt32(); |