/* * 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. */ #ifndef MEDIAMETADATARETRIEVER_H #define MEDIAMETADATARETRIEVER_H #include // for status_t #include #include #include namespace android { class IMediaPlayerService; class IMediaMetadataRetriever; // Keep these in synch with the constants defined in MediaMetadataRetriever.java // class. enum { METADATA_KEY_CD_TRACK_NUMBER = 0, METADATA_KEY_ALBUM = 1, METADATA_KEY_ARTIST = 2, METADATA_KEY_AUTHOR = 3, METADATA_KEY_COMPOSER = 4, METADATA_KEY_DATE = 5, METADATA_KEY_GENRE = 6, METADATA_KEY_TITLE = 7, METADATA_KEY_YEAR = 8, METADATA_KEY_DURATION = 9, METADATA_KEY_NUM_TRACKS = 10, METADATA_KEY_IS_DRM_CRIPPLED = 11, METADATA_KEY_CODEC = 12, METADATA_KEY_RATING = 13, METADATA_KEY_COMMENT = 14, METADATA_KEY_COPYRIGHT = 15, METADATA_KEY_BIT_RATE = 16, METADATA_KEY_FRAME_RATE = 17, METADATA_KEY_VIDEO_FORMAT = 18, METADATA_KEY_VIDEO_HEIGHT = 19, METADATA_KEY_VIDEO_WIDTH = 20, METADATA_KEY_WRITER = 21, METADATA_KEY_MIMETYPE = 22, // Add more here... }; // The intended mode of operations:$ // METADATA_MODE_NOOP: Experimental - just add and remove data source.$ // METADATA_MODE_FRAME_CAPTURE_ONLY: For capture frame/thumbnail only.$ // METADATA_MODE_METADATA_RETRIEVAL_ONLY: For meta data retrieval only.$ // METADATA_MODE_FRAME_CAPTURE_AND_METADATA_RETRIEVAL: For both frame capture // and meta data retrieval.$ enum { METADATA_MODE_NOOP = 0x00, METADATA_MODE_FRAME_CAPTURE_ONLY = 0x01, METADATA_MODE_METADATA_RETRIEVAL_ONLY = 0x02, METADATA_MODE_FRAME_CAPTURE_AND_METADATA_RETRIEVAL = 0x03 }; class MediaMetadataRetriever: public RefBase { public: MediaMetadataRetriever(); ~MediaMetadataRetriever(); void disconnect(); status_t setDataSource(const char* dataSourceUrl); status_t setDataSource(int fd, int64_t offset, int64_t length); status_t setMode(int mode); status_t getMode(int* mode); sp captureFrame(); sp extractAlbumArt(); const char* extractMetadata(int keyCode); private: static const sp& getService(); class DeathNotifier: public IBinder::DeathRecipient { public: DeathNotifier() {} virtual ~DeathNotifier(); virtual void binderDied(const wp& who); }; static sp sDeathNotifier; static Mutex sServiceLock; static sp sService; Mutex mLock; sp mRetriever; }; }; // namespace android #endif // MEDIAMETADATARETRIEVER_H