1ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang/*
2ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * Copyright 2017, The Android Open Source Project
3ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang *
4ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * Licensed under the Apache License, Version 2.0 (the "License");
5ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * you may not use this file except in compliance with the License.
6ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * You may obtain a copy of the License at
7ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang *
8ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang *     http://www.apache.org/licenses/LICENSE-2.0
9ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang *
10ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * Unless required by applicable law or agreed to in writing, software
11ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * distributed under the License is distributed on an "AS IS" BASIS,
12ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * See the License for the specific language governing permissions and
14ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang * limitations under the License.
15ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang */
16ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
17ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang#ifndef CALLBACK_MEDIA_SOURCE_H_
18ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang#define CALLBACK_MEDIA_SOURCE_H_
19ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
20d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang#include <media/MediaSource.h>
21ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang#include <media/stagefright/foundation/ABase.h>
22ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
23ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kangnamespace android {
24ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
2549ce671c4efa4c5d038351ca441e34c5afa5241fDongwon Kangclass IMediaSource;
2649ce671c4efa4c5d038351ca441e34c5afa5241fDongwon Kang
27ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang// A stagefright MediaSource that wraps a binder IMediaSource.
28ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kangclass CallbackMediaSource : public MediaSource {
29ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kangpublic:
30ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    explicit CallbackMediaSource(const sp<IMediaSource> &source);
31ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    virtual ~CallbackMediaSource();
32ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    virtual status_t start(MetaData *params = NULL);
33ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    virtual status_t stop();
34ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    virtual sp<MetaData> getFormat();
35ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    virtual status_t read(
361889c3edad32995c0cf26ae2248fe7c957b7ec84Dongwon Kang            MediaBufferBase **buffer, const ReadOptions *options = NULL);
37ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    virtual status_t pause();
38ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
39ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kangprivate:
40ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    sp<IMediaSource> mSource;
41ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
42ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang    DISALLOW_EVIL_CONSTRUCTORS(CallbackMediaSource);
43ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang};
44ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
45ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang}  // namespace android
46ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang
47ba8128f9db82da66f28c6e6740d4721d80da954eDongwon Kang#endif  // CALLBACK_MEDIA_SOURCE_H_
48