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