1d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang/* 2d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * Copyright (C) 2017 The Android Open Source Project 3d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * 4d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * Licensed under the Apache License, Version 2.0 (the "License"); 5d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * you may not use this file except in compliance with the License. 6d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * You may obtain a copy of the License at 7d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * 8d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * http://www.apache.org/licenses/LICENSE-2.0 9d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * 10d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * Unless required by applicable law or agreed to in writing, software 11d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * distributed under the License is distributed on an "AS IS" BASIS, 12d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * See the License for the specific language governing permissions and 14d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang * limitations under the License. 15d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang */ 16d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 17d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang#ifndef DATA_SOURCE_FACTORY_H_ 18d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 19d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang#define DATA_SOURCE_FACTORY_H_ 20d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 21d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang#include <sys/types.h> 22d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang#include <utils/RefBase.h> 23d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 24d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kangnamespace android { 25d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 2673feb8cda587e02f1ff68095b17d47e1d6e37c70Wei Jiastruct MediaHTTPService; 27d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kangclass String8; 28d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kangstruct HTTPBase; 29d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 30d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kangclass DataSourceFactory { 31d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kangpublic: 32d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang static sp<DataSource> CreateFromURI( 3373feb8cda587e02f1ff68095b17d47e1d6e37c70Wei Jia const sp<MediaHTTPService> &httpService, 34d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang const char *uri, 35d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang const KeyedVector<String8, String8> *headers = NULL, 36d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang String8 *contentType = NULL, 37d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang HTTPBase *httpSource = NULL); 38d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 3973feb8cda587e02f1ff68095b17d47e1d6e37c70Wei Jia static sp<DataSource> CreateMediaHTTP(const sp<MediaHTTPService> &httpService); 40d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang static sp<DataSource> CreateFromFd(int fd, int64_t offset, int64_t length); 41d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang}; 42d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 43d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang} // namespace android 44d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang 45d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang#endif // DATA_SOURCE_FACTORY_H_ 46