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

Commit 985746d1 authored by Robert Shih's avatar Robert Shih
Browse files

HLS: handle EXT-X-DISCONTINUITY-SEQUENCE correctly

Because EXT-X-DISCONTINUITY is a prefix of EXT-X-DISCONTINUITY-SEQUENCE,
putting EXT-X-DISCONTINUITY first in an if-startsWith/else-if-startsWith
block would cause EXT-X-DISCONTINUITY-SEQUENCE be parsed as
EXT-X-DISCONTINUITY.

Bug: 28320768
Change-Id: I667b97b0e2050324eec26779e6a2dae7900e96b8
parent 4178befd
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -603,6 +603,18 @@ status_t M3UParser::parse(const void *_data, size_t size) {
                    return ERROR_MALFORMED;
                }
                err = parseMetaDataDuration(line, &itemMeta, "durationUs");
            } else if (line.startsWith("#EXT-X-DISCONTINUITY-SEQUENCE")) {
                if (mIsVariantPlaylist) {
                    return ERROR_MALFORMED;
                }
                size_t seq;
                err = parseDiscontinuitySequence(line, &seq);
                if (err == OK) {
                    mDiscontinuitySeq = seq;
                    ALOGI("mDiscontinuitySeq %zu", mDiscontinuitySeq);
                } else {
                    ALOGI("Failed to parseDiscontinuitySequence %d", err);
                }
            } else if (line.startsWith("#EXT-X-DISCONTINUITY")) {
                if (mIsVariantPlaylist) {
                    return ERROR_MALFORMED;
@@ -638,15 +650,6 @@ status_t M3UParser::parse(const void *_data, size_t size) {
                }
            } else if (line.startsWith("#EXT-X-MEDIA")) {
                err = parseMedia(line);
            } else if (line.startsWith("#EXT-X-DISCONTINUITY-SEQUENCE")) {
                if (mIsVariantPlaylist) {
                    return ERROR_MALFORMED;
                }
                size_t seq;
                err = parseDiscontinuitySequence(line, &seq);
                if (err == OK) {
                    mDiscontinuitySeq = seq;
                }
            }

            if (err != OK) {