Commit Diff


commit - 2be3531b0dcadd5c29adc1fff94844876de00afe
commit + c782d7505d2481993f034dc8c80060f1ae176698
blob - d73bcc7147293cce0ea0a9a55185cccc5f9abd7d
blob + 20dcbafb6a363bd6b7450c989e8750e388189460
--- m3u8/parse.go
+++ m3u8/parse.go
@@ -4,7 +4,6 @@ import (
 	"errors"
 	"fmt"
 	"io"
-	"regexp"
 	"strconv"
 	"strings"
 	"time"
@@ -87,11 +86,12 @@ func Decode(rd io.Reader) (*Playlist, error) {
 			case tagEndList:
 				p.End = true
 			case tagMediaSequence:
-				val, err := parseSequence(lex)
+				it = <-lex.items
+				seq, err := strconv.Atoi(it.val)
 				if err != nil {
 					return p, fmt.Errorf("parse media sequence: %w", err)
 				}
-				p.Sequence = val
+				p.Sequence = seq
 			}
 		}
 	}
@@ -388,14 +388,3 @@ func parseByteRange(s string) (ByteRange, error) {
 	}
 	return ByteRange{n, nn}, nil
 }
-
-func parseSequence(lex *lexer) (int, error) {
-	re := regexp.MustCompile(`#EXT-X-MEDIA-SEQUENCE:(\d+)`)
-
-	match := re.FindStringSubmatch(lex.input)
-	if len(match) > 1 {
-		return strconv.Atoi(match[1])
-	}
-
-	return 0, fmt.Errorf("invalid sequence number")
-}