1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//! Muxer implementations.
//!
//! This module provides muxers for writing compressed packets
//! to container formats.
//!
//! # Supported Formats
//!
//! - Matroska/`WebM` via [`MatroskaMuxer`]
//! - FLAC via [`FlacMuxer`]
//! - Ogg via [`OggMuxer`] (Opus, Vorbis, FLAC)
//! - WAV/RIFF via [`WavMuxer`]
//! - MPEG-TS via [`MpegTsMuxer`] (AV1/VP9/VP8/Opus/FLAC)
//!
//! # Patent Protection
//!
//! All muxers only support royalty-free codecs. Attempting to
//! mux patent-encumbered codecs will result in a
//! [`PatentViolation`](oximedia_core::OxiError::PatentViolation) error.
//!
//! # Example
//!
//! ```ignore
//! use oximedia_container::mux::{Muxer, MuxerConfig, MatroskaMuxer};
//! use oximedia_io::FileSource;
//!
//! // Create muxer configuration
//! let config = MuxerConfig::new()
//! .with_title("My Video")
//! .with_writing_app("OxiMedia");
//!
//! // Create muxer
//! let sink = FileSink::create("output.mkv").await?;
//! let mut muxer = MatroskaMuxer::new(sink, config);
//!
//! // Add streams
//! muxer.add_stream(video_stream_info)?;
//! muxer.add_stream(audio_stream_info)?;
//!
//! // Write header
//! muxer.write_header().await?;
//!
//! // Write packets
//! for packet in packets {
//! muxer.write_packet(&packet).await?;
//! }
//!
//! // Finalize
//! muxer.write_trailer().await?;
//! ```
pub use ;
pub use ;
pub use FlacMuxer;
pub use MatroskaMuxer;
pub use ;
pub use MpegTsMuxer;
pub use OggMuxer;
pub use ;
pub use ;
pub use ;