mediametadataretriever.h revision cce8bd12da6d8419a8770e4552a51ec297c250c2
1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* 2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (C) 2008 The Android Open Source Project 3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Licensed under the Apache License, Version 2.0 (the "License"); 5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * you may not use this file except in compliance with the License. 6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * You may obtain a copy of the License at 7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * http://www.apache.org/licenses/LICENSE-2.0 9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Unless required by applicable law or agreed to in writing, software 11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * distributed under the License is distributed on an "AS IS" BASIS, 12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See the License for the specific language governing permissions and 14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * limitations under the License. 15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifndef MEDIAMETADATARETRIEVER_H 19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define MEDIAMETADATARETRIEVER_H 20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include <utils/Errors.h> // for status_t 22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include <utils/threads.h> 23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include <utils/IMemory.h> 24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include <media/IMediaMetadataRetriever.h> 25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtnamespace android { 272c23b7348ac966c08728d4908cf89d673d91bb76Dmitry Shmidt 282c23b7348ac966c08728d4908cf89d673d91bb76Dmitry Shmidtclass IMediaPlayerService; 29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtclass IMediaMetadataRetriever; 30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt// Keep these in synch with the constants defined in MediaMetadataRetriever.java 322c23b7348ac966c08728d4908cf89d673d91bb76Dmitry Shmidt// class. 332c23b7348ac966c08728d4908cf89d673d91bb76Dmitry Shmidtenum { 342c23b7348ac966c08728d4908cf89d673d91bb76Dmitry Shmidt METADATA_KEY_CD_TRACK_NUMBER = 0, 35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_ALBUM = 1, 36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_ARTIST = 2, 37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_AUTHOR = 3, 38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_COMPOSER = 4, 39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_DATE = 5, 40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_GENRE = 6, 41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_TITLE = 7, 42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_YEAR = 8, 43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_DURATION = 9, 44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_NUM_TRACKS = 10, 45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_IS_DRM_CRIPPLED = 11, 46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_CODEC = 12, 47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_RATING = 13, 48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_COMMENT = 14, 49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_COPYRIGHT = 15, 50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_BIT_RATE = 16, 51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_FRAME_RATE = 17, 52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_VIDEO_FORMAT = 18, 53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_VIDEO_HEIGHT = 19, 54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt METADATA_KEY_VIDEO_WIDTH = 20, 55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt // Add more here... 56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtclass MediaMetadataRetriever: public RefBase 60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtpublic: 62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt MediaMetadataRetriever(); 63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt ~MediaMetadataRetriever(); 64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt void disconnect(); 65526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt status_t setDataSource(const char* dataSourceUrl); 66526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt status_t setDataSource(int fd, int64_t offset, int64_t length); 67526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt status_t setMode(int mode); 68526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt status_t getMode(int* mode); 69526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt sp<IMemory> captureFrame(); 70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt sp<IMemory> extractAlbumArt(); 71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt const char* extractMetadata(int keyCode); 72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtprivate: 74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt static const sp<IMediaPlayerService>& getService(); 75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt class DeathNotifier: public IBinder::DeathRecipient 77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt { 78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt public: 79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DeathNotifier() {} 80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt virtual ~DeathNotifier(); 81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt virtual void binderDied(const wp<IBinder>& who); 82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt }; 83526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 84526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt static sp<DeathNotifier> sDeathNotifier; 85526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt static Mutex sServiceLock; 86526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt static sp<IMediaPlayerService> sService; 87526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 88526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt Mutex mLock; 89526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt sp<IMediaMetadataRetriever> mRetriever; 90526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 91526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 92526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 93526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; // namespace android 94526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 952c23b7348ac966c08728d4908cf89d673d91bb76Dmitry Shmidt#endif // MEDIAMETADATARETRIEVER_H 96526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt