pub enum MediaNotificationContent {
    NewIncomingStream {
        stream_name: String,
    },
    StreamDisconnected,
    Video {
        codec: VideoCodec,
        is_sequence_header: bool,
        is_keyframe: bool,
        data: Bytes,
        timestamp: VideoTimestamp,
    },
    Audio {
        codec: AudioCodec,
        is_sequence_header: bool,
        data: Bytes,
        timestamp: Duration,
    },
    Metadata {
        data: HashMap<String, String>,
    },
    MediaPayload {
        payload_type: Arc<String>,
        timestamp: Duration,
        metadata: MediaPayloadMetadataCollection,
        data: Bytes,
        is_required_for_decoding: bool,
    },
}
Expand description

The detailed information contained within a media notification

Variants

NewIncomingStream

Fields

stream_name: String

The name for the stream that’s being published

Announces that this stream has now connected, and steps that receive this notification should prepare for media data to start coming through

StreamDisconnected

Announces that this stream’s source has disconnected and will no longer be sending any new notifications down. Steps that receive this message can use this to clean up any information they are tracking about this stream, as no new media will arrive without a new NewIncomingStream announcement.

Video

Fields

codec: VideoCodec
is_sequence_header: bool
is_keyframe: bool
data: Bytes
timestamp: VideoTimestamp

Video content

Audio

Fields

codec: AudioCodec
is_sequence_header: bool
data: Bytes
timestamp: Duration

Audio content

Metadata

Fields

New stream metadata

MediaPayload

Fields

payload_type: Arc<String>

High level description of the format of bytes contained in the payload. May be the name of a codec (e.g. aac) but may also be more specific, such as a codec specific stream format (e.g. h264 avc). The identifiers for these payload types will need to be agreed upon, so different components can know when they support different payloads.

timestamp: Duration

How long since an unidentified epoch is this payload valid for. It cannot be assumed that this is necessarily the duration from stream begin, but can be used to determine when this payload should be decoded in comparison to payloads that came in before and after it.

metadata: MediaPayloadMetadataCollection

Metadata that’s only specific to this individual payload

data: Bytes

Actual payload bytes

is_required_for_decoding: bool

Determines if this payload is a high priority packet that is required for decoding. This is meant for sequence headers (for h264 and aac as an example) where later packets cannot be decoded without it. These high priority packets are rarely re-sent, and therefore this flag lets us know to cache them when this is true.

Flagging this as true will cause these packets to be cached, potentially until a StreamDisconnected signal occurs, and therefore this must only be set for rare high priority packets (i.e. not for key frames in video).

An individual payload as part of this media stream

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more
Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more
Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more
Compare self to key and return true if they are equal.

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more