Skip to content

Move RtcRtpEncodingParameters into separate module #223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
44 changes: 2 additions & 42 deletions crates/native/src/api/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
pub mod capability;
pub mod media_info;
pub mod media_stream_track;
pub mod rtc_rtp_encoding_parameters;
pub mod stats;

use std::{
Expand Down Expand Up @@ -33,6 +34,7 @@ pub use self::{
set_audio_level_observer_enabled, set_track_enabled, track_height,
track_state, track_width, update_audio_processing,
},
rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
stats::{
CandidateType, IceCandidateStats, IceRole, Protocol,
RtcIceCandidateStats, RtcInboundRtpStreamMediaType,
Expand Down Expand Up @@ -597,48 +599,6 @@ pub struct AudioProcessingConstraints {
pub echo_cancellation: Option<bool>,
}

/// Representation of [RTCRtpEncodingParameters][0].
///
/// [0]: https://w3.org/TR/webrtc#rtcrtpencodingparameters
pub struct RtcRtpEncodingParameters {
/// [RTP stream ID (RID)][0] to be sent using the RID header extension.
///
/// [0]: https://w3.org/TR/webrtc#dom-rtcrtpcodingparameters-rid
pub rid: String,

/// Indicator whether the described [`RtcRtpEncodingParameters`] are
/// currently actively being used.
pub active: bool,

/// Maximum number of bits per second to allow for these
/// [`RtcRtpEncodingParameters`].
pub max_bitrate: Option<i32>,

/// Maximum number of frames per second to allow for these
/// [`RtcRtpEncodingParameters`].
pub max_framerate: Option<f64>,

/// Factor for scaling down the video with these
/// [`RtcRtpEncodingParameters`].
pub scale_resolution_down_by: Option<f64>,

/// Scalability mode describing layers within the media stream.
pub scalability_mode: Option<String>,
}

impl From<&sys::RtpEncodingParameters> for RtcRtpEncodingParameters {
fn from(sys: &sys::RtpEncodingParameters) -> Self {
Self {
rid: sys.rid(),
active: sys.active(),
max_bitrate: sys.max_bitrate(),
max_framerate: sys.max_framerate(),
scale_resolution_down_by: sys.scale_resolution_down_by(),
scalability_mode: sys.scalability_mode(),
}
}
}

/// Representation of an [RTCRtpTransceiverInit][0].
///
/// [0]: https://w3.org/TR/webrtc#dom-rtcrtptransceiverinit
Expand Down
47 changes: 47 additions & 0 deletions crates/native/src/api/rtc_rtp_encoding_parameters.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//! [RTCRtpEncodingParameters][0] definitions.
//!
//! [0]: https://w3.org/TR/webrtc#rtcrtpencodingparameters

use libwebrtc_sys as sys;

/// Representation of [RTCRtpEncodingParameters][0].
///
/// [0]: https://w3.org/TR/webrtc#rtcrtpencodingparameters
pub struct RtcRtpEncodingParameters {
/// [RTP stream ID (RID)][0] to be sent using the RID header extension.
///
/// [0]: https://w3.org/TR/webrtc#dom-rtcrtpcodingparameters-rid
pub rid: String,

/// Indicator whether the described [`RtcRtpEncodingParameters`] are
/// currently actively being used.
pub active: bool,

/// Maximum number of bits per second to allow for these
/// [`RtcRtpEncodingParameters`].
pub max_bitrate: Option<i32>,

/// Maximum number of frames per second to allow for these
/// [`RtcRtpEncodingParameters`].
pub max_framerate: Option<f64>,

/// Factor for scaling down the video with these
/// [`RtcRtpEncodingParameters`].
pub scale_resolution_down_by: Option<f64>,

/// Scalability mode describing layers within the media stream.
pub scalability_mode: Option<String>,
}

impl From<&sys::RtpEncodingParameters> for RtcRtpEncodingParameters {
fn from(sys: &sys::RtpEncodingParameters) -> Self {
Self {
rid: sys.rid(),
active: sys.active(),
max_bitrate: sys.max_bitrate(),
max_framerate: sys.max_framerate(),
scale_resolution_down_by: sys.scale_resolution_down_by(),
scalability_mode: sys.scalability_mode(),
}
}
}
88 changes: 40 additions & 48 deletions crates/native/src/frb_generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1312,7 +1312,7 @@ impl SseDecode for Vec<u8> {

impl SseDecode
for Vec<(
crate::api::RtcRtpEncodingParameters,
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)>
{
Expand All @@ -1323,10 +1323,7 @@ impl SseDecode
let mut len_ = <i32>::sse_decode(deserializer);
let mut ans_ = vec![];
for idx_ in 0..len_ {
ans_.push(<(
crate::api::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)>::sse_decode(deserializer));
ans_.push(<(crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,RustOpaqueMoi<Arc < RtpEncodingParameters >>,)>::sse_decode(deserializer));
}
return ans_;
}
Expand Down Expand Up @@ -1360,17 +1357,17 @@ impl SseDecode for Vec<crate::api::RtcIceServer> {
}
}

impl SseDecode for Vec<crate::api::RtcRtpEncodingParameters> {
impl SseDecode
for Vec<crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters>
{
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(
deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer,
) -> Self {
let mut len_ = <i32>::sse_decode(deserializer);
let mut ans_ = vec![];
for idx_ in 0..len_ {
ans_.push(<crate::api::RtcRtpEncodingParameters>::sse_decode(
deserializer,
));
ans_.push(<crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters>::sse_decode(deserializer));
}
return ans_;
}
Expand Down Expand Up @@ -1885,16 +1882,15 @@ impl SseDecode for crate::api::stats::rtc_ice_candidate_stats::Protocol {

impl SseDecode
for (
crate::api::RtcRtpEncodingParameters,
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)
{
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(
deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer,
) -> Self {
let mut var_field0 =
<crate::api::RtcRtpEncodingParameters>::sse_decode(deserializer);
let mut var_field0 = <crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters>::sse_decode(deserializer);
let mut var_field1 =
<RustOpaqueMoi<Arc<RtpEncodingParameters>>>::sse_decode(
deserializer,
Expand Down Expand Up @@ -2029,7 +2025,9 @@ return crate::api::stats::rtc_outbound_rtp_stream_media_type::RtcOutboundRtpStre
_ => { unimplemented!(""); }}}
}

impl SseDecode for crate::api::RtcRtpEncodingParameters {
impl SseDecode
for crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters
{
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(
deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer,
Expand All @@ -2042,14 +2040,7 @@ impl SseDecode for crate::api::RtcRtpEncodingParameters {
<Option<f64>>::sse_decode(deserializer);
let mut var_scalabilityMode =
<Option<String>>::sse_decode(deserializer);
return crate::api::RtcRtpEncodingParameters {
rid: var_rid,
active: var_active,
max_bitrate: var_maxBitrate,
max_framerate: var_maxFramerate,
scale_resolution_down_by: var_scaleResolutionDownBy,
scalability_mode: var_scalabilityMode,
};
return crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters{rid: var_rid, active: var_active, max_bitrate: var_maxBitrate, max_framerate: var_maxFramerate, scale_resolution_down_by: var_scaleResolutionDownBy, scalability_mode: var_scalabilityMode};
}
}

Expand All @@ -2059,7 +2050,7 @@ impl SseDecode for crate::api::RtcRtpSendParameters {
deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer,
) -> Self {
let mut var_encodings = <Vec<(
crate::api::RtcRtpEncodingParameters,
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)>>::sse_decode(deserializer);
let mut var_inner =
Expand Down Expand Up @@ -2402,10 +2393,9 @@ impl SseDecode for crate::api::RtpTransceiverInit {
) -> Self {
let mut var_direction =
<crate::api::RtpTransceiverDirection>::sse_decode(deserializer);
let mut var_sendEncodings =
<Vec<crate::api::RtcRtpEncodingParameters>>::sse_decode(
deserializer,
);
let mut var_sendEncodings = <Vec<
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
>>::sse_decode(deserializer);
return crate::api::RtpTransceiverInit {
direction: var_direction,
send_encodings: var_sendEncodings,
Expand Down Expand Up @@ -3470,7 +3460,9 @@ impl flutter_rust_bridge::IntoIntoDart<crate::api::stats::rtc_outbound_rtp_strea
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::RtcRtpEncodingParameters {
impl flutter_rust_bridge::IntoDart
for crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters
{
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
self.rid.into_into_dart().into_dart(),
Expand All @@ -3484,13 +3476,17 @@ impl flutter_rust_bridge::IntoDart for crate::api::RtcRtpEncodingParameters {
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::RtcRtpEncodingParameters
for crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::RtcRtpEncodingParameters>
for crate::api::RtcRtpEncodingParameters
impl
flutter_rust_bridge::IntoIntoDart<
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
> for crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters
{
fn into_into_dart(self) -> crate::api::RtcRtpEncodingParameters {
fn into_into_dart(
self,
) -> crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters {
self
}
}
Expand Down Expand Up @@ -4611,7 +4607,7 @@ impl SseEncode for Vec<u8> {

impl SseEncode
for Vec<(
crate::api::RtcRtpEncodingParameters,
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)>
{
Expand All @@ -4622,10 +4618,7 @@ impl SseEncode
) {
<i32>::sse_encode(self.len() as _, serializer);
for item in self {
<(
crate::api::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)>::sse_encode(item, serializer);
<(crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,RustOpaqueMoi<Arc < RtpEncodingParameters >>,)>::sse_encode(item, serializer);
}
}
}
Expand Down Expand Up @@ -4656,17 +4649,17 @@ impl SseEncode for Vec<crate::api::RtcIceServer> {
}
}

impl SseEncode for Vec<crate::api::RtcRtpEncodingParameters> {
impl SseEncode
for Vec<crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters>
{
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(
self,
serializer: &mut flutter_rust_bridge::for_generated::SseSerializer,
) {
<i32>::sse_encode(self.len() as _, serializer);
for item in self {
<crate::api::RtcRtpEncodingParameters>::sse_encode(
item, serializer,
);
<crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters>::sse_encode(item, serializer);
}
}
}
Expand Down Expand Up @@ -5154,7 +5147,7 @@ impl SseEncode for crate::api::stats::rtc_ice_candidate_stats::Protocol {

impl SseEncode
for (
crate::api::RtcRtpEncodingParameters,
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)
{
Expand All @@ -5163,7 +5156,7 @@ impl SseEncode
self,
serializer: &mut flutter_rust_bridge::for_generated::SseSerializer,
) {
<crate::api::RtcRtpEncodingParameters>::sse_encode(self.0, serializer);
<crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters>::sse_encode(self.0, serializer);
<RustOpaqueMoi<Arc<RtpEncodingParameters>>>::sse_encode(
self.1, serializer,
);
Expand Down Expand Up @@ -5280,7 +5273,9 @@ crate::api::stats::rtc_outbound_rtp_stream_media_type::RtcOutboundRtpStreamStats
_ => { unimplemented!(""); }}}
}

impl SseEncode for crate::api::RtcRtpEncodingParameters {
impl SseEncode
for crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters
{
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(
self,
Expand All @@ -5302,7 +5297,7 @@ impl SseEncode for crate::api::RtcRtpSendParameters {
serializer: &mut flutter_rust_bridge::for_generated::SseSerializer,
) {
<Vec<(
crate::api::RtcRtpEncodingParameters,
crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters,
RustOpaqueMoi<Arc<RtpEncodingParameters>>,
)>>::sse_encode(self.encodings, serializer);
<RustOpaqueMoi<Arc<RtpParameters>>>::sse_encode(self.inner, serializer);
Expand Down Expand Up @@ -5542,10 +5537,7 @@ impl SseEncode for crate::api::RtpTransceiverInit {
self.direction,
serializer,
);
<Vec<crate::api::RtcRtpEncodingParameters>>::sse_encode(
self.send_encodings,
serializer,
);
<Vec<crate::api::rtc_rtp_encoding_parameters::RtcRtpEncodingParameters>>::sse_encode(self.send_encodings, serializer);
}
}

Expand Down
Loading
Loading