diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
commit | 15f767b960b38059a74a42a33e16d8df2aec8bc1 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /media/libmedia/IMediaPlayerService.cpp | |
parent | ad04d9201452001dbaac4349f084cc9316190b89 (diff) | |
download | frameworks_av-15f767b960b38059a74a42a33e16d8df2aec8bc1.zip frameworks_av-15f767b960b38059a74a42a33e16d8df2aec8bc1.tar.gz frameworks_av-15f767b960b38059a74a42a33e16d8df2aec8bc1.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'media/libmedia/IMediaPlayerService.cpp')
-rw-r--r-- | media/libmedia/IMediaPlayerService.cpp | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/media/libmedia/IMediaPlayerService.cpp b/media/libmedia/IMediaPlayerService.cpp deleted file mode 100644 index 370e3fb..0000000 --- a/media/libmedia/IMediaPlayerService.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/* -** -** Copyright 2008, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - -#include <stdint.h> -#include <sys/types.h> -#include <utils/Parcel.h> - -#include <utils/IMemory.h> -#include <media/IMediaPlayerService.h> -#include <media/IMediaRecorder.h> - -namespace android { - -enum { - CREATE_URL = IBinder::FIRST_CALL_TRANSACTION, - CREATE_FD, - DECODE_URL, - DECODE_FD, - CREATE_MEDIA_RECORDER, - CREATE_METADATA_RETRIEVER, -}; - -class BpMediaPlayerService: public BpInterface<IMediaPlayerService> -{ -public: - BpMediaPlayerService(const sp<IBinder>& impl) - : BpInterface<IMediaPlayerService>(impl) - { - } - - 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; - data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); - data.writeInt32(pid); - data.writeStrongBinder(client->asBinder()); - data.writeCString(url); - remote()->transact(CREATE_URL, data, &reply); - 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; - data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); - data.writeInt32(pid); - data.writeStrongBinder(client->asBinder()); - data.writeFileDescriptor(fd); - data.writeInt64(offset); - data.writeInt64(length); - remote()->transact(CREATE_FD, data, &reply); - return interface_cast<IMediaPlayer>(reply.readStrongBinder()); - } - - virtual sp<IMemory> decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat) - { - Parcel data, reply; - data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); - data.writeCString(url); - 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, int* pFormat) - { - Parcel data, reply; - data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor()); - data.writeFileDescriptor(fd); - data.writeInt64(offset); - data.writeInt64(length); - remote()->transact(DECODE_FD, data, &reply); - *pSampleRate = uint32_t(reply.readInt32()); - *pNumChannels = reply.readInt32(); - *pFormat = reply.readInt32(); - return interface_cast<IMemory>(reply.readStrongBinder()); - } -}; - -IMPLEMENT_META_INTERFACE(MediaPlayerService, "android.hardware.IMediaPlayerService"); - -// ---------------------------------------------------------------------- - -#define CHECK_INTERFACE(interface, data, reply) \ - do { if (!data.enforceInterface(interface::getInterfaceDescriptor())) { \ - LOGW("Call incorrectly routed to " #interface); \ - return PERMISSION_DENIED; \ - } } while (0) - -status_t BnMediaPlayerService::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) -{ - switch(code) { - case CREATE_URL: { - CHECK_INTERFACE(IMediaPlayerService, data, reply); - pid_t pid = data.readInt32(); - sp<IMediaPlayerClient> client = interface_cast<IMediaPlayerClient>(data.readStrongBinder()); - const char* url = data.readCString(); - sp<IMediaPlayer> player = create(pid, client, url); - reply->writeStrongBinder(player->asBinder()); - return NO_ERROR; - } break; - case CREATE_FD: { - CHECK_INTERFACE(IMediaPlayerService, data, reply); - pid_t pid = data.readInt32(); - sp<IMediaPlayerClient> client = interface_cast<IMediaPlayerClient>(data.readStrongBinder()); - int fd = dup(data.readFileDescriptor()); - int64_t offset = data.readInt64(); - int64_t length = data.readInt64(); - sp<IMediaPlayer> player = create(pid, client, fd, offset, length); - reply->writeStrongBinder(player->asBinder()); - return NO_ERROR; - } break; - case DECODE_URL: { - CHECK_INTERFACE(IMediaPlayerService, data, reply); - const char* url = data.readCString(); - uint32_t sampleRate; - int 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; - case DECODE_FD: { - CHECK_INTERFACE(IMediaPlayerService, data, reply); - int fd = dup(data.readFileDescriptor()); - int64_t offset = data.readInt64(); - int64_t length = data.readInt64(); - uint32_t sampleRate; - int 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); - } -} - -// ---------------------------------------------------------------------------- - -}; // namespace android - |