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