1*ec779b8eSAndroid Build Coastguard Worker /* 2*ec779b8eSAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project 3*ec779b8eSAndroid Build Coastguard Worker * 4*ec779b8eSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*ec779b8eSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*ec779b8eSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*ec779b8eSAndroid Build Coastguard Worker * 8*ec779b8eSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*ec779b8eSAndroid Build Coastguard Worker * 10*ec779b8eSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*ec779b8eSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*ec779b8eSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*ec779b8eSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*ec779b8eSAndroid Build Coastguard Worker * limitations under the License. 15*ec779b8eSAndroid Build Coastguard Worker */ 16*ec779b8eSAndroid Build Coastguard Worker 17*ec779b8eSAndroid Build Coastguard Worker 18*ec779b8eSAndroid Build Coastguard Worker /* 19*ec779b8eSAndroid Build Coastguard Worker * This file defines an NDK API. 20*ec779b8eSAndroid Build Coastguard Worker * Do not remove methods. 21*ec779b8eSAndroid Build Coastguard Worker * Do not change method signatures. 22*ec779b8eSAndroid Build Coastguard Worker * Do not change the value of constants. 23*ec779b8eSAndroid Build Coastguard Worker * Do not change the size of any of the classes defined in here. 24*ec779b8eSAndroid Build Coastguard Worker * Do not reference types that are not part of the NDK. 25*ec779b8eSAndroid Build Coastguard Worker * Do not #include files that aren't part of the NDK. 26*ec779b8eSAndroid Build Coastguard Worker */ 27*ec779b8eSAndroid Build Coastguard Worker 28*ec779b8eSAndroid Build Coastguard Worker #ifndef _NDK_MEDIA_DATASOURCE_PRIV_H 29*ec779b8eSAndroid Build Coastguard Worker #define _NDK_MEDIA_DATASOURCE_PRIV_H 30*ec779b8eSAndroid Build Coastguard Worker 31*ec779b8eSAndroid Build Coastguard Worker #include <sys/cdefs.h> 32*ec779b8eSAndroid Build Coastguard Worker #include <sys/types.h> 33*ec779b8eSAndroid Build Coastguard Worker 34*ec779b8eSAndroid Build Coastguard Worker #include <media/DataSource.h> 35*ec779b8eSAndroid Build Coastguard Worker #include <media/MediaHTTPService.h> 36*ec779b8eSAndroid Build Coastguard Worker #include <media/NdkMediaDataSource.h> 37*ec779b8eSAndroid Build Coastguard Worker #include <utils/Mutex.h> 38*ec779b8eSAndroid Build Coastguard Worker #include <utils/String8.h> 39*ec779b8eSAndroid Build Coastguard Worker 40*ec779b8eSAndroid Build Coastguard Worker using namespace android; 41*ec779b8eSAndroid Build Coastguard Worker 42*ec779b8eSAndroid Build Coastguard Worker struct NdkDataSource : public DataSource { 43*ec779b8eSAndroid Build Coastguard Worker 44*ec779b8eSAndroid Build Coastguard Worker NdkDataSource(AMediaDataSource *); 45*ec779b8eSAndroid Build Coastguard Worker 46*ec779b8eSAndroid Build Coastguard Worker virtual status_t initCheck() const; 47*ec779b8eSAndroid Build Coastguard Worker virtual uint32_t flags(); 48*ec779b8eSAndroid Build Coastguard Worker virtual ssize_t readAt(off64_t offset, void *data, size_t size); 49*ec779b8eSAndroid Build Coastguard Worker virtual status_t getSize(off64_t *); 50*ec779b8eSAndroid Build Coastguard Worker virtual String8 toString(); 51*ec779b8eSAndroid Build Coastguard Worker virtual String8 getMIMEType() const; 52*ec779b8eSAndroid Build Coastguard Worker virtual void close(); 53*ec779b8eSAndroid Build Coastguard Worker virtual status_t getAvailableSize(off64_t offset, off64_t *size); 54*ec779b8eSAndroid Build Coastguard Worker 55*ec779b8eSAndroid Build Coastguard Worker protected: 56*ec779b8eSAndroid Build Coastguard Worker virtual ~NdkDataSource(); 57*ec779b8eSAndroid Build Coastguard Worker 58*ec779b8eSAndroid Build Coastguard Worker private: 59*ec779b8eSAndroid Build Coastguard Worker 60*ec779b8eSAndroid Build Coastguard Worker Mutex mLock; 61*ec779b8eSAndroid Build Coastguard Worker AMediaDataSource *mDataSource; 62*ec779b8eSAndroid Build Coastguard Worker 63*ec779b8eSAndroid Build Coastguard Worker }; 64*ec779b8eSAndroid Build Coastguard Worker 65*ec779b8eSAndroid Build Coastguard Worker sp<MediaHTTPService> createMediaHttpService(const char *uri); 66*ec779b8eSAndroid Build Coastguard Worker 67*ec779b8eSAndroid Build Coastguard Worker #endif // _NDK_MEDIA_DATASOURCE_PRIV_H 68*ec779b8eSAndroid Build Coastguard Worker 69