MPEG2TSExtractor.h revision 5a1c3529e4fa2f8a11054181294e0ce79fff8dd3
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 AMessage; 13struct AnotherPacketSource; 14struct ATSParser; 15struct DataSource; 16struct MPEG2TSSource; 17struct String8; 18 19struct MPEG2TSExtractor : public MediaExtractor { 20 MPEG2TSExtractor(const sp<DataSource> &source); 21 22 virtual size_t countTracks(); 23 virtual sp<MediaSource> getTrack(size_t index); 24 virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 25 26 virtual sp<MetaData> getMetaData(); 27 28 virtual uint32_t flags() const { 29 return CAN_PAUSE; 30 } 31 32private: 33 friend struct MPEG2TSSource; 34 35 Mutex mLock; 36 37 sp<DataSource> mDataSource; 38 sp<ATSParser> mParser; 39 40 Vector<sp<AnotherPacketSource> > mSourceImpls; 41 42 off_t mOffset; 43 44 void init(); 45 status_t feedMore(); 46 47 DISALLOW_EVIL_CONSTRUCTORS(MPEG2TSExtractor); 48}; 49 50bool SniffMPEG2TS( 51 const sp<DataSource> &source, String8 *mimeType, float *confidence, 52 sp<AMessage> *); 53 54} // namespace android 55 56#endif // MPEG2_TS_EXTRACTOR_H_ 57