From 15f767b960b38059a74a42a33e16d8df2aec8bc1 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 3 Mar 2009 18:28:45 -0800 Subject: auto import from //depot/cupcake/@135843 --- media/libmedia/IMediaMetadataRetriever.cpp | 218 ----------------------------- 1 file changed, 218 deletions(-) delete mode 100644 media/libmedia/IMediaMetadataRetriever.cpp (limited to 'media/libmedia/IMediaMetadataRetriever.cpp') diff --git a/media/libmedia/IMediaMetadataRetriever.cpp b/media/libmedia/IMediaMetadataRetriever.cpp deleted file mode 100644 index 85b5944..0000000 --- a/media/libmedia/IMediaMetadataRetriever.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/* -** -** Copyright (C) 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 -#include -#include -#include -#include - -namespace android { - -enum { - DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, - SET_DATA_SOURCE_URL, - SET_DATA_SOURCE_FD, - SET_MODE, - GET_MODE, - CAPTURE_FRAME, - EXTARCT_ALBUM_ART, - EXTRACT_METADATA, -}; - -class BpMediaMetadataRetriever: public BpInterface -{ -public: - BpMediaMetadataRetriever(const sp& impl) - : BpInterface(impl) - { - } - - // disconnect from media metadata retriever service - void disconnect() - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - remote()->transact(DISCONNECT, data, &reply); - } - - status_t setDataSource(const char* srcUrl) - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - data.writeCString(srcUrl); - remote()->transact(SET_DATA_SOURCE_URL, data, &reply); - return reply.readInt32(); - } - - status_t setDataSource(int fd, int64_t offset, int64_t length) - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - data.writeFileDescriptor(fd); - data.writeInt64(offset); - data.writeInt64(length); - remote()->transact(SET_DATA_SOURCE_FD, data, &reply); - return reply.readInt32(); - } - - status_t setMode(int mode) - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - data.writeInt32(mode); - remote()->transact(SET_MODE, data, &reply); - return reply.readInt32(); - } - - status_t getMode(int* mode) const - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - remote()->transact(GET_MODE, data, &reply); - *mode = reply.readInt32(); - return reply.readInt32(); - } - - sp captureFrame() - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - remote()->transact(CAPTURE_FRAME, data, &reply); - status_t ret = reply.readInt32(); - if (ret != NO_ERROR) { - return NULL; - } - return interface_cast(reply.readStrongBinder()); - } - - sp extractAlbumArt() - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - remote()->transact(EXTARCT_ALBUM_ART, data, &reply); - status_t ret = reply.readInt32(); - if (ret != NO_ERROR) { - return NULL; - } - return interface_cast(reply.readStrongBinder()); - } - - const char* extractMetadata(int keyCode) - { - Parcel data, reply; - data.writeInterfaceToken(IMediaMetadataRetriever::getInterfaceDescriptor()); - data.writeInt32(keyCode); - remote()->transact(EXTRACT_METADATA, data, &reply); - status_t ret = reply.readInt32(); - if (ret != NO_ERROR) { - return NULL; - } - return reply.readCString(); - } -}; - -IMPLEMENT_META_INTERFACE(MediaMetadataRetriever, "android.hardware.IMediaMetadataRetriever"); - -// ---------------------------------------------------------------------- - -#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 BnMediaMetadataRetriever::onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) -{ - switch (code) { - case DISCONNECT: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - disconnect(); - return NO_ERROR; - } break; - case SET_DATA_SOURCE_URL: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - const char* srcUrl = data.readCString(); - reply->writeInt32(setDataSource(srcUrl)); - return NO_ERROR; - } break; - case SET_DATA_SOURCE_FD: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - int fd = dup(data.readFileDescriptor()); - int64_t offset = data.readInt64(); - int64_t length = data.readInt64(); - reply->writeInt32(setDataSource(fd, offset, length)); - return NO_ERROR; - } break; - case SET_MODE: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - int mode = data.readInt32(); - reply->writeInt32(setMode(mode)); - return NO_ERROR; - } break; - case GET_MODE: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - int mode; - status_t status = getMode(&mode); - reply->writeInt32(mode); - reply->writeInt32(status); - return NO_ERROR; - } break; - case CAPTURE_FRAME: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - sp bitmap = captureFrame(); - if (bitmap != 0) { // Don't send NULL across the binder interface - reply->writeInt32(NO_ERROR); - reply->writeStrongBinder(bitmap->asBinder()); - } else { - reply->writeInt32(UNKNOWN_ERROR); - } - return NO_ERROR; - } break; - case EXTARCT_ALBUM_ART: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - sp albumArt = extractAlbumArt(); - if (albumArt != 0) { // Don't send NULL across the binder interface - reply->writeInt32(NO_ERROR); - reply->writeStrongBinder(albumArt->asBinder()); - } else { - reply->writeInt32(UNKNOWN_ERROR); - } - return NO_ERROR; - } break; - case EXTRACT_METADATA: { - CHECK_INTERFACE(IMediaMetadataRetriever, data, reply); - int keyCode = data.readInt32(); - const char* value = extractMetadata(keyCode); - if (value != NULL) { // Don't send NULL across the binder interface - reply->writeInt32(NO_ERROR); - reply->writeCString(value); - } else { - reply->writeInt32(UNKNOWN_ERROR); - } - return NO_ERROR; - } break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - -// ---------------------------------------------------------------------------- - -}; // namespace android - -- cgit v1.1