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(feature = "v1_16")]
//#[cfg_attr(docsrs, 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]) -> /*Ignored*/RTPSourceMeta {
//    unsafe { TODO: call ffi:gst_buffer_add_rtp_source_meta() }
//}

//#[cfg(feature = "v1_16")]
//#[cfg_attr(docsrs, 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) -> 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(feature = "v1_20")]
#[cfg_attr(docsrs, 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<Basic: 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<Basic: Pointer>, size: u32, ntptime: u64) -> bool {
//    unsafe { TODO: call ffi:gst_rtp_hdrext_set_ntp_64() }
//}