Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49fb943d authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "ATSParser now supports a mode in which PTS is considered to be absolute time"

parents 83c8ad6d ebd266c0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ NuPlayer::StreamingSource::~StreamingSource() {

void NuPlayer::StreamingSource::start() {
    mStreamListener = new NuPlayerStreamListener(mSource, 0);
    mTSParser = new ATSParser;
    mTSParser = new ATSParser(ATSParser::TS_TIMESTAMPS_ARE_ABSOLUTE);

    mStreamListener->start();
}
+12 −9
Original line number Diff line number Diff line
@@ -325,6 +325,7 @@ sp<MediaSource> ATSParser::Program::getSource(SourceType type) {
}

int64_t ATSParser::Program::convertPTSToTimestamp(uint64_t PTS) {
    if (!(mParser->mFlags & TS_TIMESTAMPS_ARE_ABSOLUTE)) {
        if (!mFirstPTSValid) {
            mFirstPTSValid = true;
            mFirstPTS = PTS;
@@ -334,6 +335,7 @@ int64_t ATSParser::Program::convertPTSToTimestamp(uint64_t PTS) {
        } else {
            PTS -= mFirstPTS;
        }
    }

    return (PTS * 100) / 9;
}
@@ -734,7 +736,8 @@ sp<MediaSource> ATSParser::Stream::getSource(SourceType type) {

////////////////////////////////////////////////////////////////////////////////

ATSParser::ATSParser() {
ATSParser::ATSParser(uint32_t flags)
    : mFlags(flags) {
}

ATSParser::~ATSParser() {
+11 −1
Original line number Diff line number Diff line
@@ -38,7 +38,16 @@ struct ATSParser : public RefBase {
        DISCONTINUITY_FORMATCHANGE
    };

    ATSParser();
    enum Flags {
        // The 90kHz clock (PTS/DTS) is absolute, i.e. PTS=0 corresponds to
        // a media time of 0.
        // If this flag is _not_ specified, the first PTS encountered in a
        // program of this stream will be assumed to correspond to media time 0
        // instead.
        TS_TIMESTAMPS_ARE_ABSOLUTE = 1
    };

    ATSParser(uint32_t flags = 0);

    void feedTSPacket(const void *data, size_t size);

@@ -73,6 +82,7 @@ private:
    struct Program;
    struct Stream;

    uint32_t mFlags;
    Vector<sp<Program> > mPrograms;

    void parseProgramAssociationTable(ABitReader *br);