diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
commit | 7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8 (patch) | |
tree | d9838a098f868ee2fcffc20627a8c9a33cb23377 /media/libmedia/IMediaPlayerService.cpp | |
parent | 2729ea9262ca60d93047e984739887cfc89e82eb (diff) | |
download | frameworks_av-7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8.zip frameworks_av-7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8.tar.gz frameworks_av-7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8.tar.bz2 |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'media/libmedia/IMediaPlayerService.cpp')
-rw-r--r-- | media/libmedia/IMediaPlayerService.cpp | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/media/libmedia/IMediaPlayerService.cpp b/media/libmedia/IMediaPlayerService.cpp index b087100..370e3fb 100644 --- a/media/libmedia/IMediaPlayerService.cpp +++ b/media/libmedia/IMediaPlayerService.cpp @@ -21,6 +21,7 @@ #include <utils/IMemory.h> #include <media/IMediaPlayerService.h> +#include <media/IMediaRecorder.h> namespace android { @@ -29,6 +30,8 @@ enum { CREATE_FD, DECODE_URL, DECODE_FD, + CREATE_MEDIA_RECORDER, + CREATE_METADATA_RETRIEVER, }; class BpMediaPlayerService: public BpInterface<IMediaPlayerService> @@ -39,6 +42,15 @@ public: { } + virtual sp<IMediaMetadataRetriever> createMetadataRetriever(pid_t pid) + { + Parcel data, reply; + data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); + data.writeInt32(pid); + remote()->transact(CREATE_METADATA_RETRIEVER, data, &reply); + return interface_cast<IMediaMetadataRetriever>(reply.readStrongBinder()); + } + virtual sp<IMediaPlayer> create(pid_t pid, const sp<IMediaPlayerClient>& client, const char* url) { Parcel data, reply; @@ -50,6 +62,15 @@ public: return interface_cast<IMediaPlayer>(reply.readStrongBinder()); } + virtual sp<IMediaRecorder> createMediaRecorder(pid_t pid) + { + Parcel data, reply; + data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); + data.writeInt32(pid); + remote()->transact(CREATE_MEDIA_RECORDER, data, &reply); + return interface_cast<IMediaRecorder>(reply.readStrongBinder()); + } + virtual sp<IMediaPlayer> create(pid_t pid, const sp<IMediaPlayerClient>& client, int fd, int64_t offset, int64_t length) { Parcel data, reply; @@ -63,7 +84,7 @@ public: return interface_cast<IMediaPlayer>(reply.readStrongBinder()); } - virtual sp<IMemory> decode(const char* url, uint32_t *pSampleRate, int* pNumChannels) + virtual sp<IMemory> decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat) { Parcel data, reply; data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); @@ -71,10 +92,11 @@ public: remote()->transact(DECODE_URL, data, &reply); *pSampleRate = uint32_t(reply.readInt32()); *pNumChannels = reply.readInt32(); + *pFormat = reply.readInt32(); return interface_cast<IMemory>(reply.readStrongBinder()); } - virtual sp<IMemory> decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels) + virtual sp<IMemory> decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat) { Parcel data, reply; data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); @@ -84,6 +106,7 @@ public: remote()->transact(DECODE_FD, data, &reply); *pSampleRate = uint32_t(reply.readInt32()); *pNumChannels = reply.readInt32(); + *pFormat = reply.readInt32(); return interface_cast<IMemory>(reply.readStrongBinder()); } }; @@ -127,9 +150,11 @@ status_t BnMediaPlayerService::onTransact( const char* url = data.readCString(); uint32_t sampleRate; int numChannels; - sp<IMemory> player = decode(url, &sampleRate, &numChannels); + int format; + sp<IMemory> player = decode(url, &sampleRate, &numChannels, &format); reply->writeInt32(sampleRate); reply->writeInt32(numChannels); + reply->writeInt32(format); reply->writeStrongBinder(player->asBinder()); return NO_ERROR; } break; @@ -140,12 +165,28 @@ status_t BnMediaPlayerService::onTransact( int64_t length = data.readInt64(); uint32_t sampleRate; int numChannels; - sp<IMemory> player = decode(fd, offset, length, &sampleRate, &numChannels); + int format; + sp<IMemory> player = decode(fd, offset, length, &sampleRate, &numChannels, &format); reply->writeInt32(sampleRate); reply->writeInt32(numChannels); + reply->writeInt32(format); reply->writeStrongBinder(player->asBinder()); return NO_ERROR; } break; + case CREATE_MEDIA_RECORDER: { + CHECK_INTERFACE(IMediaPlayerService, data, reply); + pid_t pid = data.readInt32(); + sp<IMediaRecorder> recorder = createMediaRecorder(pid); + reply->writeStrongBinder(recorder->asBinder()); + return NO_ERROR; + } break; + case CREATE_METADATA_RETRIEVER: { + CHECK_INTERFACE(IMediaPlayerService, data, reply); + pid_t pid = data.readInt32(); + sp<IMediaMetadataRetriever> retriever = createMetadataRetriever(pid); + reply->writeStrongBinder(retriever->asBinder()); + return NO_ERROR; + } break; default: return BBinder::onTransact(code, data, reply, flags); } |