MPEG2TSExtractor.h revision cda17c606b0fe3ccda4dc68a6d43882410ea2462
1#ifndef MPEG2_TS_EXTRACTOR_H_ 2 3#define MPEG2_TS_EXTRACTOR_H_ 4 5#include <media/stagefright/foundation/ABase.h> 6#include <media/stagefright/MediaExtractor.h> 7#include <utils/threads.h> 8#include <utils/Vector.h> 9 10namespace android { 11 12struct AnotherPacketSource; 13struct ATSParser; 14struct DataSource; 15struct MPEG2TSSource; 16struct String8; 17 18struct MPEG2TSExtractor : public MediaExtractor { 19 MPEG2TSExtractor(const sp<DataSource> &source); 20 21 virtual size_t countTracks(); 22 virtual sp<MediaSource> getTrack(size_t index); 23 virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 24 25 virtual sp<MetaData> getMetaData(); 26 27 virtual uint32_t flags() const { 28 return CAN_PAUSE; 29 } 30 31private: 32 friend struct MPEG2TSSource; 33 34 Mutex mLock; 35 36 sp<DataSource> mDataSource; 37 sp<ATSParser> mParser; 38 39 Vector<sp<AnotherPacketSource> > mSourceImpls; 40 41 off_t mOffset; 42 43 void init(); 44 status_t feedMore(); 45 46 DISALLOW_EVIL_CONSTRUCTORS(MPEG2TSExtractor); 47}; 48 49bool SniffMPEG2TS( 50 const sp<DataSource> &source, String8 *mimeType, float *confidence); 51 52} // namespace android 53 54#endif // MPEG2_TS_EXTRACTOR_H_ 55