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
use Bytes;
use Timestamp;
use crateActivity;
/// One unit of raw PCM crossing the codec boundary: what
/// [`encode::Producer::write`](crate::encode::Producer::write) takes and what
/// [`decode::Consumer::read`](crate::decode::Consumer::read) returns.
///
/// Just a payload, a presentation timestamp, and whether the packet these
/// samples came from coded any audio. PCM layout (format / sample rate / channel count)
/// is fixed by the producer or consumer at construction time, never per frame,
/// so callers can't accidentally drift the format mid-stream.
///
/// `#[non_exhaustive]`: construct input with [`Frame::new`] so the record can
/// gain metadata without breaking callers.