1b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen/*
2b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * Copyright (C) 2013 The Android Open Source Project
3b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen *
4b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * Licensed under the Apache License, Version 2.0 (the "License");
5b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * you may not use this file except in compliance with the License.
6b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * You may obtain a copy of the License at
7b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen *
8b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen *      http://www.apache.org/licenses/LICENSE-2.0
9b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen *
10b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * Unless required by applicable law or agreed to in writing, software
11b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * distributed under the License is distributed on an "AS IS" BASIS,
12b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * See the License for the specific language governing permissions and
14b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen * limitations under the License.
15b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen */
16b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
17b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#ifndef ANDROID_MEDIA_EXTRACTOR_SERVICE_H
18b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#define ANDROID_MEDIA_EXTRACTOR_SERVICE_H
19b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
20b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <binder/BinderService.h>
21b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <media/IMediaExtractorService.h>
22b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#include <media/IMediaExtractor.h>
23b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
24b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissennamespace android {
25b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
26b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissenclass MediaExtractorService : public BinderService<MediaExtractorService>, public BnMediaExtractorService
27b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen{
28b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    friend class BinderService<MediaExtractorService>;    // for MediaExtractorService()
29b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissenpublic:
30b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    MediaExtractorService() : BnMediaExtractorService() { }
31b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    virtual ~MediaExtractorService() { }
32b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    virtual void onFirstRef() { }
33b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
34b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    static const char*  getServiceName() { return "media.extractor"; }
35b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
36b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    virtual sp<IMediaExtractor> makeExtractor(const sp<IDataSource> &source, const char *mime);
37d49dbd6b625cddb82f3f7bbeac62d48ef338ef0fAndy Hung
38d49dbd6b625cddb82f3f7bbeac62d48ef338ef0fAndy Hung    virtual sp<IDataSource> makeIDataSource(int fd, int64_t offset, int64_t length);
39d49dbd6b625cddb82f3f7bbeac62d48ef338ef0fAndy Hung
40a48a51c056198a778755cbed52884dc30b74ac0aMarco Nelissen    virtual status_t    dump(int fd, const Vector<String16>& args);
41b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
42b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    virtual status_t    onTransact(uint32_t code, const Parcel& data, Parcel* reply,
43b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen                                uint32_t flags);
44b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
45b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissenprivate:
46b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen    Mutex               mLock;
47b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen};
48b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
49b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen}   // namespace android
50b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen
51b2487f03f12dcafdb801fc0007c8df8412397f44Marco Nelissen#endif  // ANDROID_MEDIA_EXTRACTOR_SERVICE_H
52