Commit Graph

142 Commits

Author SHA1 Message Date
381ac7732f Merge pull request #72 from ant1eicher/master
Support AWS Elemental MediaConvert decimal format.
2024-02-14 18:59:35 +01:00
e3b6390186 EXTINF tags need to be in floating-point format to work with AWS Elemental MediaConvert
AWS Elemental MediaConvert rejects playlists with EXTINF tags that are not in floating point format. When m3u8 MediaSegment self.duration is an exact number without trailing decimals, writeln cuts off the decimal places and prints it like an integer.

This change adds support for fixed length floating point numbers.
2024-02-14 16:29:47 +02:00
7f322675eb Merge pull request #73 from rutgersc/fix/targetduration
#EXT-X-TARGETDURATION:<s> is supposed to be a decimal-integer
2024-01-30 20:57:38 +01:00
c5cceeb4f6 Update version to 6.0.0 2024-01-26 18:56:34 +01:00
5109753b96 #EXT-X-TARGETDURATION:<s> is supposed to be a decimal-integer
https://datatracker.ietf.org/doc/html/rfc8216#section-4.3.3.1
2024-01-26 18:55:39 +01:00
487d63da4d Udpate version to 5.0.5 2023-12-05 08:33:58 +02:00
f6af8acbfe ran rustfmt 2023-12-04 21:25:16 +02:00
46622345d1 added test 2023-12-04 21:25:16 +02:00
d8e0283ddb allowing empty comments 2023-12-04 21:25:16 +02:00
b9cf88b7ec Update version to 5.0.4 2023-05-08 10:24:06 +03:00
a1970192ff Write BYTERANGE inside quotes 2023-04-12 10:39:44 +03:00
ae31a2741f Parse #EXT-X-MAP BYTERANGE attr from quoted string 2023-04-12 10:39:44 +03:00
e7a6cf943c allow millisecond accuracy for EXT-X-PROGRAM-DATE-TIME 2023-04-11 18:05:54 +03:00
48e416cd69 Update version to 5.0.3 2022-12-02 10:46:10 +02:00
015b05f26c Fix some minor clippy warnings 2022-12-02 10:46:10 +02:00
b0a9fe2625 When a manifest is incomplete or damaged, the contains_master_tag may go into infinite loop if is_master_playlist_tag_line detection hasn't had a chance to succeed.
Clippy recommendation is implemented to use `.is_none()` instead of comparing to literal `Option::None`.
Test added
2022-12-02 10:18:40 +02:00
14d24b94c8 Release 5.0.2 2022-09-23 20:16:57 +03:00
2a76fa549c Remove unnecessary features from chrono, removing vulnerable time dependency 2022-09-23 18:56:20 +03:00
18739b59ac Release 5.0.1 2022-09-12 11:06:52 +03:00
e41c47a8f8 Map unknown strings to already existing Other variants of enums
Fixes https://github.com/rutgersc/m3u8-rs/issues/52
2022-09-12 10:12:44 +03:00
31b31fd958 Update version to 5.0.0 2022-07-30 13:05:09 +02:00
d2881fef08 Improve #EXT-X-INDEPENDENT-SEGMENTS placement
While it can be anywhere in the playlist as it applies to, this one usually is at the top of the manifest, right after the VERSION tag.
2022-07-21 10:34:57 +03:00
bd7cce75e9 Parse PROGRAM-DATE-TIME and DATERANGE start/end as proper datetimes instead of strings 2022-07-21 10:34:57 +03:00
7247e02ee5 Use more specific types for playlist fields and improve parsing/writing
Added
* DateRange struct and implementations
* Parsing DateRange (wasn't parsed due to a typo)
* fn daterange() to parse DateRange
* `write_some_other_attributes` macro
* resolved `FIXME required unless None` for method and iv

Changed / fixed:
* trim_matches() potentially too greedy, replaced with strip_suffix/prefix
* removed a bunch of "Unnecessary qualification", eg `fmt::` for `Display`
* changed `fn extmap()` to use `QuotedOrUnquoted` and `other_attributes`
* `fmt` for `QuotedOrUnquoted` are now printing quoted strings in `"`
* `bool_default_false` macro renamed to `is_yes`
* qualified error message for `quoted_string_parse` and `unquoted_string_parse`
* `other_attributes` now `Option<>`
* `ClosedCaptionGroupId::Other(s)` variant processing added to `write_to`
* `HDCPLevel::Other(s)` variant processing added to `fmt`
* `AlternativeMediaType::Other(s)` variant processing added to `fmt`
* `InstreamId::Other(s)` variant processing added to `fmt`
* `MediaPlaylistType::Other(s)` variant processing added to `fmt`
* `KeyMethod::Other(s)` variant processing added to `fmt`
* included `DateRange` to tests
* included `other_attributes` to tests

Minor:
Typos corrections
rustfmt applied
2022-07-21 10:34:57 +03:00
6559e45b49 Store VariantStream attributes in more specific types and validate them 2022-07-21 10:34:57 +03:00
0789098d7d Add some convenience API to QuotedOrUnquoted 2022-07-21 10:34:57 +03:00
b692ac0808 Remove additional newline after "#EXTM3U" added in previous commit
Co-authored-by: Vadim Getmanshchuk <vagetman@users.noreply.github.com>
2022-04-19 18:20:32 +03:00
85141f6a51 Merge pull request #50 from vagetman/patch-3
`EXT-X-VERSION` tag may be absent
2022-04-17 23:45:33 +03:00
d941541be8 EXT-X-VERSION tag may be absent 2022-04-17 01:08:07 -07:00
7173c26015 Merge pull request #45 from vagetman/patch-2
A fix for `CLOSED-CAPTIONS=NONE` case and a few minor  fixes
2022-04-17 09:03:34 +03:00
ac0f881eef * added QuotedOrUnquoted enum
* implemented `Default`, `From`, `Display` traits
* updated `VariantStream`, `AlternativeMedia`, `SessionData`, `Key`, `Start` emums
* updated `from_hashmap` methods for each enum
* fixed tests
2022-04-15 23:06:40 -07:00
212a485687 Merge pull request #47 from rutgersc/bump
Update version to 4.0.0
2022-04-13 23:14:49 +02:00
dc352b7ef3 Update version to 4.0.0 2022-04-13 22:57:56 +02:00
c28cb7f7d6 Merge pull request #46 from rutgersc/readme
Update readme, v3.0.1
2022-04-09 13:03:13 +02:00
f606063330 Update version to 3.0.1 2022-04-09 12:59:07 +02:00
210af70f72 Update readme 2022-04-09 12:59:07 +02:00
5c842fd9f6 minor cargo clippy suggestions 2022-04-08 16:31:37 -07:00
2f92e3ae8c #EXT-X-ENDLIST is moved to be the last part of the media manifest. Theoretically it can appear anywhere in manifest, so the current placement is not breaking the standard, but not usually is what found in the wild and I believe will help with readability. As any placement is possible, the placement at the end is completely legal. 2022-04-08 16:27:04 -07:00
3c8368f9a3 A fix for CLOSED-CAPTIONS=NONE case and a few minor fixes
The PR includes 
* a hotfix for issue #44. I'm not entirely sure and it's possible to
* `#EXT-X-ENDLIST` is moved to be the last part of the media manifest. Theoretically it can appear anywhere in manifest, so the current placement is not breaking the standard, but not usually is what found in the wild and I believe will help with readability. As any placement is possible, the placement at the end is completely legal.  
* minor `cargo clippy` suggestions
2022-04-08 16:23:27 -07:00
39b52a1d4b Merge pull request #42 from sdroege/u64-instead-of-i32
Use `u64` instead of `i32` for byte ranges and sequence numbers
2022-02-19 13:38:06 +01:00
bc8ccf0f5d Merge pull request #41 from sdroege/derive-more-traits
Derive some more traits for the public types where it makes sense
2022-02-19 13:37:41 +01:00
5ee1273f7c Merge pull request #40 from sdroege/type-closed-captions
The `TYPE` attribute uses `CLOSED-CAPTIONS` and not `CLOSEDCAPTIONS`
2022-02-19 13:37:26 +01:00
44aa097c90 Use u64 instead of i32 for byte ranges and sequence numbers
Fixes https://github.com/rutgersc/m3u8-rs/issues/39
2022-01-07 12:47:40 +02:00
1bfad5df01 Derive some more traits for the public types where it makes sense
This makes them easier to use.
2022-01-07 12:44:56 +02:00
cca02b239d The TYPE attribute uses CLOSED-CAPTIONS and not CLOSEDCAPTIONS
See https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-10#section-4.4.6.1
2022-01-05 19:11:42 +02:00
836ef1caaf Merge pull request #37 from sdroege/is-master-playlist-early-return
Don't bother parsing as a playlist or detecting if it's a master/medi…
2021-11-20 19:06:41 +01:00
2fae1d8f20 Don't bother parsing as a playlist or detecting if it's a master/media playlist if it doesn't start with #EXTM3U 2021-11-19 11:29:46 +02:00
53e9439660 Merge pull request #36 from sdroege/nom-7
Port to nom 7
2021-11-18 17:15:50 +01:00
472618e1aa Update version to 3.0.0 2021-11-18 15:05:32 +02:00
2432846064 Move the crate docs to the root of the crate so they actually show up
And also fix all the broken links while we're at it.
2021-11-18 15:04:17 +02:00