TimedTextSource.h revision 6655174826330afe66ef766258181ae8c11f3f6c
16655174826330afe66ef766258181ae8c11f3f6cInsun Kang/* 26655174826330afe66ef766258181ae8c11f3f6cInsun Kang * Copyright (C) 2012 The Android Open Source Project 36655174826330afe66ef766258181ae8c11f3f6cInsun Kang * 46655174826330afe66ef766258181ae8c11f3f6cInsun Kang * Licensed under the Apache License, Version 2.0 (the "License"); 56655174826330afe66ef766258181ae8c11f3f6cInsun Kang * you may not use this file except in compliance with the License. 66655174826330afe66ef766258181ae8c11f3f6cInsun Kang * You may obtain a copy of the License at 76655174826330afe66ef766258181ae8c11f3f6cInsun Kang * 86655174826330afe66ef766258181ae8c11f3f6cInsun Kang * http://www.apache.org/licenses/LICENSE-2.0 96655174826330afe66ef766258181ae8c11f3f6cInsun Kang * 106655174826330afe66ef766258181ae8c11f3f6cInsun Kang * Unless required by applicable law or agreed to in writing, software 116655174826330afe66ef766258181ae8c11f3f6cInsun Kang * distributed under the License is distributed on an "AS IS" BASIS, 126655174826330afe66ef766258181ae8c11f3f6cInsun Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136655174826330afe66ef766258181ae8c11f3f6cInsun Kang * See the License for the specific language governing permissions and 146655174826330afe66ef766258181ae8c11f3f6cInsun Kang * limitations under the License. 156655174826330afe66ef766258181ae8c11f3f6cInsun Kang */ 166655174826330afe66ef766258181ae8c11f3f6cInsun Kang 176655174826330afe66ef766258181ae8c11f3f6cInsun Kang#ifndef TIMED_TEXT_SOURCE_H_ 186655174826330afe66ef766258181ae8c11f3f6cInsun Kang#define TIMED_TEXT_SOURCE_H_ 196655174826330afe66ef766258181ae8c11f3f6cInsun Kang 206655174826330afe66ef766258181ae8c11f3f6cInsun Kang#include <media/stagefright/foundation/ABase.h> // for DISALLOW_XXX macro. 216655174826330afe66ef766258181ae8c11f3f6cInsun Kang#include <media/stagefright/MediaErrors.h> 226655174826330afe66ef766258181ae8c11f3f6cInsun Kang#include <media/stagefright/MediaSource.h> // for MediaSource::ReadOptions 236655174826330afe66ef766258181ae8c11f3f6cInsun Kang#include <utils/RefBase.h> 246655174826330afe66ef766258181ae8c11f3f6cInsun Kang 256655174826330afe66ef766258181ae8c11f3f6cInsun Kangnamespace android { 266655174826330afe66ef766258181ae8c11f3f6cInsun Kang 276655174826330afe66ef766258181ae8c11f3f6cInsun Kangclass DataSource; 286655174826330afe66ef766258181ae8c11f3f6cInsun Kangclass Parcel; 296655174826330afe66ef766258181ae8c11f3f6cInsun Kang 306655174826330afe66ef766258181ae8c11f3f6cInsun Kangclass TimedTextSource : public RefBase { 316655174826330afe66ef766258181ae8c11f3f6cInsun Kang public: 326655174826330afe66ef766258181ae8c11f3f6cInsun Kang enum FileType { 336655174826330afe66ef766258181ae8c11f3f6cInsun Kang OUT_OF_BAND_FILE_SRT = 1, 346655174826330afe66ef766258181ae8c11f3f6cInsun Kang OUT_OF_BAND_FILE_SMI = 2, 356655174826330afe66ef766258181ae8c11f3f6cInsun Kang }; 366655174826330afe66ef766258181ae8c11f3f6cInsun Kang static sp<TimedTextSource> CreateTimedTextSource( 376655174826330afe66ef766258181ae8c11f3f6cInsun Kang const sp<MediaSource>& source); 386655174826330afe66ef766258181ae8c11f3f6cInsun Kang static sp<TimedTextSource> CreateTimedTextSource( 396655174826330afe66ef766258181ae8c11f3f6cInsun Kang const sp<DataSource>& source, FileType filetype); 406655174826330afe66ef766258181ae8c11f3f6cInsun Kang TimedTextSource() {} 416655174826330afe66ef766258181ae8c11f3f6cInsun Kang virtual status_t start() = 0; 426655174826330afe66ef766258181ae8c11f3f6cInsun Kang virtual status_t stop() = 0; 436655174826330afe66ef766258181ae8c11f3f6cInsun Kang // Returns subtitle parcel and its start time. 446655174826330afe66ef766258181ae8c11f3f6cInsun Kang virtual status_t read( 456655174826330afe66ef766258181ae8c11f3f6cInsun Kang int64_t *timeUs, 466655174826330afe66ef766258181ae8c11f3f6cInsun Kang Parcel *parcel, 476655174826330afe66ef766258181ae8c11f3f6cInsun Kang const MediaSource::ReadOptions *options = NULL) = 0; 486655174826330afe66ef766258181ae8c11f3f6cInsun Kang virtual status_t extractGlobalDescriptions(Parcel *parcel) { 496655174826330afe66ef766258181ae8c11f3f6cInsun Kang return INVALID_OPERATION; 506655174826330afe66ef766258181ae8c11f3f6cInsun Kang } 516655174826330afe66ef766258181ae8c11f3f6cInsun Kang 526655174826330afe66ef766258181ae8c11f3f6cInsun Kang protected: 536655174826330afe66ef766258181ae8c11f3f6cInsun Kang virtual ~TimedTextSource() { } 546655174826330afe66ef766258181ae8c11f3f6cInsun Kang 556655174826330afe66ef766258181ae8c11f3f6cInsun Kang private: 566655174826330afe66ef766258181ae8c11f3f6cInsun Kang DISALLOW_EVIL_CONSTRUCTORS(TimedTextSource); 576655174826330afe66ef766258181ae8c11f3f6cInsun Kang}; 586655174826330afe66ef766258181ae8c11f3f6cInsun Kang 596655174826330afe66ef766258181ae8c11f3f6cInsun Kang} // namespace android 606655174826330afe66ef766258181ae8c11f3f6cInsun Kang 616655174826330afe66ef766258181ae8c11f3f6cInsun Kang#endif // TIMED_TEXT_SOURCE_H_ 62