2019-09-08 10:23:33 +00:00
|
|
|
#![warn(
|
|
|
|
//clippy::pedantic,
|
|
|
|
clippy::nursery,
|
|
|
|
clippy::cargo
|
|
|
|
)]
|
2019-09-13 14:06:52 +00:00
|
|
|
#![warn(missing_docs)]
|
2018-02-14 03:00:41 +00:00
|
|
|
//! [HLS] m3u8 parser/generator.
|
|
|
|
//!
|
|
|
|
//! [HLS]: https://tools.ietf.org/html/rfc8216
|
|
|
|
//!
|
|
|
|
//! # Examples
|
|
|
|
//!
|
2018-02-14 19:55:28 +00:00
|
|
|
//! ```
|
|
|
|
//! use hls_m3u8::MediaPlaylist;
|
|
|
|
//!
|
|
|
|
//! let m3u8 = "#EXTM3U
|
|
|
|
//! #EXT-X-TARGETDURATION:10
|
|
|
|
//! #EXT-X-VERSION:3
|
|
|
|
//! #EXTINF:9.009,
|
|
|
|
//! http://media.example.com/first.ts
|
|
|
|
//! #EXTINF:9.009,
|
|
|
|
//! http://media.example.com/second.ts
|
|
|
|
//! #EXTINF:3.003,
|
|
|
|
//! http://media.example.com/third.ts
|
|
|
|
//! #EXT-X-ENDLIST";
|
|
|
|
//!
|
|
|
|
//! assert!(m3u8.parse::<MediaPlaylist>().is_ok());
|
|
|
|
//! ```
|
2018-02-11 06:10:52 +00:00
|
|
|
|
|
|
|
pub use error::{Error, ErrorKind};
|
2018-02-14 17:52:56 +00:00
|
|
|
pub use master_playlist::{MasterPlaylist, MasterPlaylistBuilder};
|
2019-09-14 19:08:35 +00:00
|
|
|
pub use media_playlist::{MediaPlaylist, MediaPlaylistBuilder};
|
2018-02-14 19:47:44 +00:00
|
|
|
pub use media_segment::{MediaSegment, MediaSegmentBuilder};
|
2018-02-11 06:10:52 +00:00
|
|
|
|
2018-02-14 19:51:44 +00:00
|
|
|
pub mod tags;
|
2018-02-14 03:16:36 +00:00
|
|
|
pub mod types;
|
2018-02-11 06:10:52 +00:00
|
|
|
|
2018-02-14 03:00:41 +00:00
|
|
|
mod attribute;
|
2018-02-11 06:10:52 +00:00
|
|
|
mod error;
|
2018-02-14 03:00:41 +00:00
|
|
|
mod line;
|
|
|
|
mod master_playlist;
|
|
|
|
mod media_playlist;
|
|
|
|
mod media_segment;
|
2019-09-06 10:55:00 +00:00
|
|
|
mod utils;
|
2018-02-11 06:10:52 +00:00
|
|
|
|
2019-09-13 14:06:52 +00:00
|
|
|
pub use error::Result;
|