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
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
// DO NOT EDIT

use crate::RTCPSDESType;
use glib::translate::*;

//#[cfg(any(feature = "v1_16", feature = "dox"))]
//#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
//#[doc(alias = "gst_buffer_add_rtp_source_meta")]
//pub fn buffer_add_rtp_source_meta(buffer: &gst::Buffer, ssrc: u32, csrc: u32, csrc_count: u32) -> /*Ignored*/Option<RTPSourceMeta> {
//    unsafe { TODO: call ffi:gst_buffer_add_rtp_source_meta() }
//}

//#[cfg(any(feature = "v1_16", feature = "dox"))]
//#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
//#[doc(alias = "gst_buffer_get_rtp_source_meta")]
//pub fn buffer_get_rtp_source_meta(buffer: &gst::Buffer) -> /*Ignored*/Option<RTPSourceMeta> {
//    unsafe { TODO: call ffi:gst_buffer_get_rtp_source_meta() }
//}

/// Converts an NTP time to UNIX nanoseconds. `ntptime` can typically be
/// the NTP time of an SR RTCP message and contains, in the upper 32 bits, the
/// number of seconds since 1900 and, in the lower 32 bits, the fractional
/// seconds. The resulting value will be the number of nanoseconds since 1970.
/// ## `ntptime`
/// an NTP timestamp
///
/// # Returns
///
/// the UNIX time for `ntptime` in nanoseconds.
#[doc(alias = "gst_rtcp_ntp_to_unix")]
pub fn rtcp_ntp_to_unix(ntptime: u64) -> u64 {
    assert_initialized_main_thread!();
    unsafe { ffi::gst_rtcp_ntp_to_unix(ntptime) }
}

/// Convert `name` into a [`RTCPSDESType`][crate::RTCPSDESType]. `name` is typically a key in a
/// [`gst::Structure`][crate::gst::Structure] containing SDES items.
/// ## `name`
/// a SDES name
///
/// # Returns
///
/// the [`RTCPSDESType`][crate::RTCPSDESType] for `name` or [`RTCPSDESType::Priv`][crate::RTCPSDESType::Priv] when `name`
/// is a private sdes item.
#[doc(alias = "gst_rtcp_sdes_name_to_type")]
pub fn rtcp_sdes_name_to_type(name: &str) -> RTCPSDESType {
    assert_initialized_main_thread!();
    unsafe { from_glib(ffi::gst_rtcp_sdes_name_to_type(name.to_glib_none().0)) }
}

/// Converts `type_` to the string equivalent. The string is typically used as a
/// key in a [`gst::Structure`][crate::gst::Structure] containing SDES items.
/// ## `type_`
/// a [`RTCPSDESType`][crate::RTCPSDESType]
///
/// # Returns
///
/// the string equivalent of `type_`
#[doc(alias = "gst_rtcp_sdes_type_to_name")]
pub fn rtcp_sdes_type_to_name(type_: RTCPSDESType) -> Option<glib::GString> {
    assert_initialized_main_thread!();
    unsafe { from_glib_none(ffi::gst_rtcp_sdes_type_to_name(type_.into_glib())) }
}

/// Converts a UNIX timestamp in nanoseconds to an NTP time. The caller should
/// pass a value with nanoseconds since 1970. The NTP time will, in the upper
/// 32 bits, contain the number of seconds since 1900 and, in the lower 32
/// bits, the fractional seconds. The resulting value can be used as an ntptime
/// for constructing SR RTCP packets.
/// ## `unixtime`
/// an UNIX timestamp in nanoseconds
///
/// # Returns
///
/// the NTP time for `unixtime`.
#[doc(alias = "gst_rtcp_unix_to_ntp")]
pub fn rtcp_unix_to_ntp(unixtime: u64) -> u64 {
    assert_initialized_main_thread!();
    unsafe { ffi::gst_rtcp_unix_to_ntp(unixtime) }
}

/// Retrieve all the factories of the currently registered RTP header
/// extensions. Call [`ElementFactory::create()`][crate::gst::ElementFactory::create()] with each factory to create
/// the associated [`RTPHeaderExtension`][crate::RTPHeaderExtension].
///
/// # Returns
///
/// a `GList` of
///  [`gst::ElementFactory`][crate::gst::ElementFactory]'s. Use `gst_plugin_feature_list_free()` after use
#[cfg(any(feature = "v1_20", feature = "dox"))]
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_20")))]
#[doc(alias = "gst_rtp_get_header_extension_list")]
pub fn rtp_get_header_extension_list() -> Vec<gst::ElementFactory> {
    assert_initialized_main_thread!();
    unsafe { FromGlibPtrContainer::from_glib_full(ffi::gst_rtp_get_header_extension_list()) }
}

//#[doc(alias = "gst_rtp_hdrext_set_ntp_56")]
//pub fn rtp_hdrext_set_ntp_56(data: /*Unimplemented*/Option<Fundamental: Pointer>, size: u32, ntptime: u64) -> bool {
//    unsafe { TODO: call ffi:gst_rtp_hdrext_set_ntp_56() }
//}

//#[doc(alias = "gst_rtp_hdrext_set_ntp_64")]
//pub fn rtp_hdrext_set_ntp_64(data: /*Unimplemented*/Option<Fundamental: Pointer>, size: u32, ntptime: u64) -> bool {
//    unsafe { TODO: call ffi:gst_rtp_hdrext_set_ntp_64() }
//}