public void parse(String line, ParseState state) { lineParser.parse(line, state); Match match = ParseUtil.match(Constants.EXT_X_MEDIA_SEQUENCE_PATTERN, line, getTag()); if (state.getMedia().mediaSequenceNumber != null) { throw ParseException.create(ParseExceptionType.MULTIPLE_EXT_TAG_INSTANCES, getTag(), line); } state.getMedia().mediaSequenceNumber = ParseUtil.parseInt(match.Groups[1].Value, getTag()); }
public void parse(String line, ParseState state) { lineParser.parse(line, state); Match match = ParseUtil.match(Constants.EXT_X_TARGETDURATION_PATTERN, line, getTag()); if (state.getMedia().targetDuration != null) { throw ParseException.create(ParseExceptionType.MULTIPLE_EXT_TAG_INSTANCES, getTag(), line); } state.getMedia().targetDuration = ParseUtil.parseInt(match.Groups[1].Value, getTag()); }
public void parse(String line, ParseState state) { lineParser.parse(line, state); Match match = ParseUtil.match(Constants.EXT_X_PROGRAM_DATE_TIME_PATTERN, line, getTag()); if (state.getMedia().programDateTime != null) { throw ParseException.create(ParseExceptionType.MULTIPLE_EXT_TAG_INSTANCES, getTag(), line); } state.getMedia().programDateTime = ParseUtil.parseDateTime(line, getTag()); }
public void parse(String line, ParseState state) { lineParser.parse(line, state); Match match = ParseUtil.match(Constants.EXT_X_PLAYLIST_TYPE_PATTERN, line, getTag()); if (state.getMedia().playlistType != null) { throw ParseException.create(ParseExceptionType.MULTIPLE_EXT_TAG_INSTANCES, getTag(), line); } //state.getMedia().playlistType = ParseUtil.parseEnum(match.Groups[1].Value, typeof(PlaylistType), getTag()); state.getMedia().playlistType = PlaylistType.fromValue(match.Groups[1].Value); }
public void parse(String line, ParseState state) { TrackData.Builder builder = new TrackData.Builder(); MediaParseState mediaState = state.getMedia(); if (state.isExtended() && mediaState.trackInfo == null) { throw ParseException.create(ParseExceptionType.MISSING_TRACK_INFO, line); } mediaState.tracks.Add(builder .withUri(line) .withTrackInfo(mediaState.trackInfo) .withEncryptionData(mediaState.encryptionData) .withProgramDateTime(mediaState.programDateTime) .withDiscontinuity(mediaState.hasDiscontinuity) .withMapInfo(mediaState.mapInfo) .withByteRange(mediaState.byteRange) .build()); mediaState.trackInfo = null; mediaState.programDateTime = null; mediaState.hasDiscontinuity = false; mediaState.mapInfo = null; mediaState.byteRange = null; }
public void parse(String line, ParseState state) { lineParser.parse(line, state); Match match = ParseUtil.match(Constants.EXT_X_BYTERANGE_PATTERN, line, getTag()); state.getMedia().byteRange = ParseUtil.matchByteRange(match); }
public void parse(String line, ParseState state) { lineParser.parse(line, state); ParseUtil.match(Constants.EXT_X_ENDLIST_PATTERN, line, getTag()); state.getMedia().endOfList = true; }
public void parse(String line, ParseState state) { lineParser.parse(line, state); Match match = ParseUtil.match(Constants.EXT_X_DISCONTINUITY_PATTERN, line, getTag()); state.getMedia().hasDiscontinuity = true; }
public void parse(String line, ParseState state) { lineParser.parse(line, state); Match match = ParseUtil.match(Constants.EXTINF_PATTERN, line, getTag()); state.getMedia().trackInfo = new TrackInfo(ParseUtil.parseFloat(match.Groups[1].Value, getTag()), match.Groups[2].Value); }
public void parse(String line, ParseState state) { lineParser.parse(line, state); MapInfo.Builder builder = new MapInfo.Builder(); ParseUtil.parseAttributes(line, builder, state, HANDLERS, getTag()); state.getMedia().mapInfo = builder.build(); }
public void parse(String line, ParseState state) { lineParser.parse(line, state); StartData.Builder builder = new StartData.Builder(); ParseUtil.parseAttributes(line, builder, state, HANDLERS, getTag()); StartData startData = builder.build(); state.getMedia().setStartData(startData); }
public override Playlist parse() { validateAvailable(); ParseState state = new ParseState(mEncoding); TrackLineParser trackLineParser = new TrackLineParser(); try { state.setMedia(); while (mScanner.hasNext()) { String line = mScanner.next(); validateLine(line); if (line.Length == 0 || isComment(line)) { continue; } else { trackLineParser.parse(line, state); } } Playlist playlist = new Playlist.Builder() .withMediaPlaylist(new MediaPlaylist.Builder() .withTracks(state.getMedia().tracks) .build()) .build(); PlaylistValidation validation = PlaylistValidation.from(playlist); if (validation.isValid()) { return(playlist); } else { throw new PlaylistException(mScanner.getInput(), validation.getErrors()); } } catch (ParseException exception) { exception.setInput(mScanner.getInput()); throw exception; } }
public void parse(String line, ParseState state) { lineParser.parse(line, state); EncryptionData.Builder builder = new EncryptionData.Builder() .withKeyFormat(Constants.DEFAULT_KEY_FORMAT) .withKeyFormatVersions(Constants.DEFAULT_KEY_FORMAT_VERSIONS); ParseUtil.parseAttributes(line, builder, state, HANDLERS, getTag()); EncryptionData encryptionData = builder.build(); if (encryptionData.getMethod() != EncryptionMethod.NONE && encryptionData.getUri() == null) { throw ParseException.create(ParseExceptionType.MISSING_ENCRYPTION_URI, getTag(), line); } state.getMedia().encryptionData = encryptionData; }
public override Playlist parse() { validateAvailable(); ParseState state = new ParseState(mEncoding); LineParser playlistParser = new PlaylistLineParser(); LineParser trackLineParser = new TrackLineParser(); try { while (mScanner.hasNext()) { String line = mScanner.next(); checkWhitespace(line); if (line.Length == 0 || isComment(line)) { continue; } else { if (isExtTag(line)) { String tagKey = getExtTagKey(line); mExtTagParsers.TryGetValue(tagKey, out IExtTagParser tagParser); if (tagParser == null) { //To support forward compatibility, when parsing Playlists, Clients //MUST: //o ignore any unrecognized tags. if (mParsingMode.allowUnknownTags) { tagParser = ExtLineParser.EXT_UNKNOWN_HANDLER; } else { throw ParseException.create(ParseExceptionType.UNSUPPORTED_EXT_TAG_DETECTED, tagKey, line); } } tagParser.parse(line, state); if (state.isMedia() && state.getMedia().endOfList) { break; } } else if (state.isMaster()) { playlistParser.parse(line, state); } else if (state.isMedia()) { trackLineParser.parse(line, state); } else { throw ParseException.create(ParseExceptionType.UNKNOWN_PLAYLIST_TYPE, line); } } } Playlist playlist = state.buildPlaylist(); PlaylistValidation validation = PlaylistValidation.from(playlist, mParsingMode); if (validation.isValid()) { return(playlist); } else { throw new PlaylistException(mScanner.getInput(), validation.getErrors()); } } catch (ParseException exception) { exception.setInput(mScanner.getInput()); throw exception; } }