1a44153c1a57202fb538659eb50706e60454d6273Andreas Huber/* 2a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * Copyright (C) 2010 The Android Open Source Project 3a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * 4a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * you may not use this file except in compliance with the License. 6a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * You may obtain a copy of the License at 7a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * 8a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * 10a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * Unless required by applicable law or agreed to in writing, software 11a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * See the License for the specific language governing permissions and 14a44153c1a57202fb538659eb50706e60454d6273Andreas Huber * limitations under the License. 15a44153c1a57202fb538659eb50706e60454d6273Andreas Huber */ 16a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 17a44153c1a57202fb538659eb50706e60454d6273Andreas Huber#ifndef LIVE_DATA_SOURCE_H_ 18a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 19a44153c1a57202fb538659eb50706e60454d6273Andreas Huber#define LIVE_DATA_SOURCE_H_ 20a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 21a44153c1a57202fb538659eb50706e60454d6273Andreas Huber#include <media/stagefright/foundation/ABase.h> 22a44153c1a57202fb538659eb50706e60454d6273Andreas Huber#include <media/stagefright/DataSource.h> 23a44153c1a57202fb538659eb50706e60454d6273Andreas Huber#include <utils/threads.h> 24a44153c1a57202fb538659eb50706e60454d6273Andreas Huber#include <utils/List.h> 25a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 26a44153c1a57202fb538659eb50706e60454d6273Andreas Hubernamespace android { 27a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 28a44153c1a57202fb538659eb50706e60454d6273Andreas Huberstruct ABuffer; 29a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 30a44153c1a57202fb538659eb50706e60454d6273Andreas Huberstruct LiveDataSource : public DataSource { 31a44153c1a57202fb538659eb50706e60454d6273Andreas Huber LiveDataSource(); 32a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 33a44153c1a57202fb538659eb50706e60454d6273Andreas Huber virtual status_t initCheck() const; 34a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 35a44153c1a57202fb538659eb50706e60454d6273Andreas Huber virtual ssize_t readAt(off64_t offset, void *data, size_t size); 365bc087c573c70c84c6a39946457590b42d392a33Andreas Huber ssize_t readAtNonBlocking(off64_t offset, void *data, size_t size); 37a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 38a44153c1a57202fb538659eb50706e60454d6273Andreas Huber void queueBuffer(const sp<ABuffer> &buffer); 39a44153c1a57202fb538659eb50706e60454d6273Andreas Huber void queueEOS(status_t finalResult); 40a44153c1a57202fb538659eb50706e60454d6273Andreas Huber void reset(); 41a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 42a44153c1a57202fb538659eb50706e60454d6273Andreas Huber size_t countQueuedBuffers(); 43a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 44a44153c1a57202fb538659eb50706e60454d6273Andreas Huberprotected: 45a44153c1a57202fb538659eb50706e60454d6273Andreas Huber virtual ~LiveDataSource(); 46a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 47a44153c1a57202fb538659eb50706e60454d6273Andreas Huberprivate: 48a44153c1a57202fb538659eb50706e60454d6273Andreas Huber Mutex mLock; 49a44153c1a57202fb538659eb50706e60454d6273Andreas Huber Condition mCondition; 50a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 51a44153c1a57202fb538659eb50706e60454d6273Andreas Huber off64_t mOffset; 52a44153c1a57202fb538659eb50706e60454d6273Andreas Huber List<sp<ABuffer> > mBufferQueue; 53a44153c1a57202fb538659eb50706e60454d6273Andreas Huber status_t mFinalResult; 54a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 55a44153c1a57202fb538659eb50706e60454d6273Andreas Huber FILE *mBackupFile; 56a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 575bc087c573c70c84c6a39946457590b42d392a33Andreas Huber ssize_t readAt_l(off64_t offset, void *data, size_t size); 585bc087c573c70c84c6a39946457590b42d392a33Andreas Huber 59a44153c1a57202fb538659eb50706e60454d6273Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(LiveDataSource); 60a44153c1a57202fb538659eb50706e60454d6273Andreas Huber}; 61a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 62a44153c1a57202fb538659eb50706e60454d6273Andreas Huber} // namespace android 63a44153c1a57202fb538659eb50706e60454d6273Andreas Huber 64a44153c1a57202fb538659eb50706e60454d6273Andreas Huber#endif // LIVE_DATA_SOURCE_H_ 65