Home | History | Annotate | Download | only in include
      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 
     10 namespace android {
     11 
     12 struct AMessage;
     13 struct AnotherPacketSource;
     14 struct ATSParser;
     15 struct DataSource;
     16 struct MPEG2TSSource;
     17 struct String8;
     18 struct LiveSource;
     19 
     20 struct MPEG2TSExtractor : public MediaExtractor {
     21     MPEG2TSExtractor(const sp<DataSource> &source);
     22 
     23     virtual size_t countTracks();
     24     virtual sp<MediaSource> getTrack(size_t index);
     25     virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags);
     26 
     27     virtual sp<MetaData> getMetaData();
     28 
     29     virtual uint32_t flags() const;
     30 
     31     void setLiveSource(const sp<LiveSource> &liveSource);
     32     void seekTo(int64_t seekTimeUs);
     33 
     34 private:
     35     friend struct MPEG2TSSource;
     36 
     37     mutable Mutex mLock;
     38 
     39     sp<DataSource> mDataSource;
     40     sp<LiveSource> mLiveSource;
     41 
     42     sp<ATSParser> mParser;
     43 
     44     Vector<sp<AnotherPacketSource> > mSourceImpls;
     45 
     46     off_t mOffset;
     47 
     48     void init();
     49     status_t feedMore();
     50 
     51     DISALLOW_EVIL_CONSTRUCTORS(MPEG2TSExtractor);
     52 };
     53 
     54 bool SniffMPEG2TS(
     55         const sp<DataSource> &source, String8 *mimeType, float *confidence,
     56         sp<AMessage> *);
     57 
     58 }  // namespace android
     59 
     60 #endif  // MPEG2_TS_EXTRACTOR_H_
     61