pub struct DvrConfig {
pub enabled: bool,
pub archive_root: String,
pub period_duration_secs: u64,
pub retention_periods: usize,
pub retention_bytes: u64,
pub overrun: ArchiveOverrunSerde,
pub dvb_service_id: Option<u16>,
}Expand description
Per-route DVR configuration.
Fields§
§enabled: boolEnable DVR recording for this route. false by default — recording
must be explicitly opted in.
archive_root: StringFilesystem path under which period files and indices are stored.
Required when enabled is true — validated by
DvrConfig::validate.
period_duration_secs: u64Period duration in seconds. When the current period has been open longer than this, a new period file is started. Default: 10800 (3 hours). 0 means “never roll over by duration” (still rolls on init change for fMP4). 0 means “never roll over by duration”.
retention_periods: usizeKeep at most this many period files; 0 disables count-based retention. Retention is quantised to whole periods.
retention_bytes: u64Keep at most this many total bytes across all period files; 0 disables byte-based retention. Quantised to whole periods.
overrun: ArchiveOverrunSerdeThe ArchiveOverrun policy for the pinning cursor this recorder
uses — see the module docs.
dvb_service_id: Option<u16>Opt in to programme-aligned rolling (issue #903 — see
the module docs): the
service_id whose EIT present/following actual section
(ETSI EN 300 468 §5.2.4, table_id 0x4E) this recorder tracks via
DvrRecorder::feed_si. None (default) disables EIT-aligned
rolling — the recorder rolls purely on period_duration_secs/init
change, exactly as before this issue.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for DvrConfig
impl<'de> Deserialize<'de> for DvrConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for DvrConfig
Auto Trait Implementations§
impl Freeze for DvrConfig
impl RefUnwindSafe for DvrConfig
impl Send for DvrConfig
impl Sync for DvrConfig
impl Unpin for DvrConfig
impl UnsafeUnpin for DvrConfig
impl UnwindSafe for DvrConfig
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DescriptorObject for T
impl<T> DescriptorObject for T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> ExtensionObject for T
impl<T> ExtensionObject for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.