diff --git a/cmake/ProjectDetails.cmake b/cmake/ProjectDetails.cmake index 941263bc..338b710d 100644 --- a/cmake/ProjectDetails.cmake +++ b/cmake/ProjectDetails.cmake @@ -1,3 +1,3 @@ -set(uvgrtp_VER 2.3.0) +set(uvgrtp_VER 3.1.0) set(uvgrtp_DESCR "uvgRTP is an Real-Time Transport Protocol (RTP) library written in C++ with a focus on simple to use and high-efficiency media delivery over the internet") set(uvgrtp_URL "https://github.com/ultravideo/uvgRTP") \ No newline at end of file diff --git a/docs/Doxyfile b/docs/Doxyfile index 0fdc4c48..a0380bfb 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -48,7 +48,7 @@ PROJECT_NAME = uvgRTP # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2.3.0 +PROJECT_NUMBER = 3.1.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/docs/html/annotated.html b/docs/html/annotated.html index 656b2f57..4cb3bcd9 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -3,12 +3,14 @@ - + uvgRTP: Class List + + @@ -21,7 +23,7 @@ -
uvgRTP 3.0.0 +
uvgRTP 3.1.0
An open-source library for RTP/SRTP media delivery
@@ -30,7 +32,7 @@
- + @@ -74,9 +76,9 @@
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 123]
- - +
[detail level 123]
 Nuvgrtp
 Nframe
+ + @@ -101,7 +103,7 @@ diff --git a/docs/html/classes.html b/docs/html/classes.html index 28af4677..6764f311 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -3,12 +3,14 @@ - +uvgRTP: Class Index + + @@ -21,7 +23,7 @@ @@ -30,7 +32,7 @@
 Nuvgrtp
 Nframe
 Crtcp_app_packetSee RFC 3550 section 6.7
 Crtcp_fb_fciRTCP Feedback Control Information, See RFC 4585 section 6.1
 Crtcp_fb_packetFeedback message. See RFC 4585 section 6.1
-
uvgRTP 3.0.0 +
uvgRTP 3.1.0
An open-source library for RTP/SRTP media delivery
- + @@ -91,7 +93,7 @@
diff --git a/docs/html/classuvgrtp_1_1context-members.html b/docs/html/classuvgrtp_1_1context-members.html index ac2b8b46..ef29bfcc 100644 --- a/docs/html/classuvgrtp_1_1context-members.html +++ b/docs/html/classuvgrtp_1_1context-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
uvgRTP 3.0.0 +
uvgRTP 3.1.0
An open-source library for RTP/SRTP media delivery
@@ -30,7 +32,7 @@
- + @@ -89,7 +91,7 @@ diff --git a/docs/html/classuvgrtp_1_1context.html b/docs/html/classuvgrtp_1_1context.html index fff933cc..2451f59f 100644 --- a/docs/html/classuvgrtp_1_1context.html +++ b/docs/html/classuvgrtp_1_1context.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::context Class Reference + + @@ -21,7 +23,7 @@ -
uvgRTP 3.0.0 +
uvgRTP 3.1.0
An open-source library for RTP/SRTP media delivery
@@ -30,7 +32,7 @@
- + @@ -82,28 +84,28 @@

Provides CNAME isolation and can be used to create uvgrtp::session objects. - More...

+ More...

#include <context.hh>

- + - + - + - + - + - +

Public Member Functions

 context ()
 context ()
 RTP context constructor.
 
 ~context ()
 ~context ()
 RTP context destructor.
 
uvgrtp::sessioncreate_session (std::pair< std::string, std::string > addresses)
uvgrtp::sessioncreate_session (std::pair< std::string, std::string > addresses)
 Create a new RTP session between two IP addresses.
 
uvgrtp::sessioncreate_session (std::string address)
uvgrtp::sessioncreate_session (std::string address)
 Create a new RTP session.
 
rtp_error_t destroy_session (uvgrtp::session *session)
rtp_error_t destroy_session (uvgrtp::session *session)
 Destroy RTP session and all of its media streams.
 
bool crypto_enabled () const
bool crypto_enabled () const
 Has Crypto++ been included in uvgRTP library.
 
@@ -121,7 +123,7 @@

uvgrtp::context::context ( - ) + ) @@ -141,14 +143,14 @@

uvgrtp::context::~context ( - ) + )

RTP context destructor.

-

This does not destroy active sessions. They must be destroyed manually by calling uvgrtp::context::destroy_session()

+

This does not destroy active sessions. They must be destroyed manually by calling uvgrtp::context::destroy_session()

@@ -162,8 +164,7 @@

uvgrtp::session * uvgrtp::context::create_session ( - std::pair< std::string, std::string >  - addresses) + std::pair< std::string, std::string > addresses) @@ -196,8 +197,7 @@

uvgrtp::session * uvgrtp::context::create_session ( - std::string  - address) + std::string address) @@ -230,7 +230,7 @@

bool uvgrtp::context::crypto_enabled ( - ) + ) const @@ -256,8 +256,7 @@

rtp_error_t uvgrtp::context::destroy_session ( - uvgrtp::session *  - session) + uvgrtp::session * session) @@ -287,7 +286,7 @@

diff --git a/docs/html/classuvgrtp_1_1media__stream-members.html b/docs/html/classuvgrtp_1_1media__stream-members.html index 1eae7a05..d3cfc256 100644 --- a/docs/html/classuvgrtp_1_1media__stream-members.html +++ b/docs/html/classuvgrtp_1_1media__stream-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
uvgRTP 3.0.0 +
uvgRTP 3.1.0
An open-source library for RTP/SRTP media delivery
@@ -30,7 +32,7 @@
- + @@ -98,7 +100,7 @@ diff --git a/docs/html/classuvgrtp_1_1media__stream.html b/docs/html/classuvgrtp_1_1media__stream.html index 80ae918b..b0962538 100644 --- a/docs/html/classuvgrtp_1_1media__stream.html +++ b/docs/html/classuvgrtp_1_1media__stream.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::media_stream Class Reference + + @@ -21,7 +23,7 @@ -
uvgRTP 3.0.0 +
uvgRTP 3.1.0
An open-source library for RTP/SRTP media delivery
@@ -30,7 +32,7 @@
- + @@ -82,62 +84,62 @@

The media_stream is an entity which represents one RTP stream. - More...

+ More...

#include <media_stream.hh>

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

Public Member Functions

rtp_error_t start_zrtp ()
rtp_error_t start_zrtp ()
 Start the ZRTP negotiation manually.
 
rtp_error_t add_srtp_ctx (uint8_t *key, uint8_t *salt)
rtp_error_t add_srtp_ctx (uint8_t *key, uint8_t *salt)
 Add keying information for user-managed SRTP session.
 
rtp_error_t push_frame (uint8_t *data, size_t data_len, int rtp_flags)
rtp_error_t push_frame (uint8_t *data, size_t data_len, int rtp_flags)
 Send data to remote participant with a custom timestamp.
 
rtp_error_t push_frame (std::unique_ptr< uint8_t[]> data, size_t data_len, int rtp_flags)
rtp_error_t push_frame (std::unique_ptr< uint8_t[]> data, size_t data_len, int rtp_flags)
 Send data to remote participant with a custom timestamp.
 
rtp_error_t push_frame (uint8_t *data, size_t data_len, uint32_t ts, int rtp_flags)
rtp_error_t push_frame (uint8_t *data, size_t data_len, uint32_t ts, int rtp_flags)
 Send data to remote participant with a custom timestamp.
 
rtp_error_t push_frame (uint8_t *data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)
rtp_error_t push_frame (uint8_t *data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)
 Send data to remote participant with custom RTP and NTP timestamps.
 
rtp_error_t push_frame (std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, int rtp_flags)
rtp_error_t push_frame (std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, int rtp_flags)
 Send data to remote participant with a custom timestamp.
 
rtp_error_t push_frame (std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)
rtp_error_t push_frame (std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)
 Send data to remote participant with custom RTP and NTP timestamps.
 
uvgrtp::frame::rtp_framepull_frame ()
uvgrtp::frame::rtp_framepull_frame ()
 Poll a frame indefinitely from the media stream object.
 
uvgrtp::frame::rtp_framepull_frame (size_t timeout_ms)
uvgrtp::frame::rtp_framepull_frame (size_t timeout_ms)
 Poll a frame for a specified time from the media stream object.
 
rtp_error_t install_receive_hook (void *arg, void(*hook)(void *, uvgrtp::frame::rtp_frame *))
rtp_error_t install_receive_hook (void *arg, void(*hook)(void *, uvgrtp::frame::rtp_frame *))
 Asynchronous way of getting frames.
 
rtp_error_t configure_ctx (int rcc_flag, ssize_t value)
rtp_error_t configure_ctx (int rcc_flag, ssize_t value)
 Configure the media stream, see RTP_CTX_CONFIGURATION_FLAGS for more details.
 
int get_configuration_value (int rcc_flag)
int get_configuration_value (int rcc_flag)
 Get the values associated with configuration flags, see RTP_CTX_CONFIGURATION_FLAGS for more details.
 
uvgrtp::rtcpget_rtcp ()
uvgrtp::rtcpget_rtcp ()
 Get pointer to the RTCP object of the media stream.
 
uint32_t get_ssrc () const
uint32_t get_ssrc () const
 Get SSRC identifier. You can use the SSRC value for example to find the report block belonging to this media_stream in RTCP sender/receiver report.
 

Detailed Description

The media_stream is an entity which represents one RTP stream.

media_stream is defined by the ports which are used for sending and/or receiving media. It is possible for media_stream to be bi- or unidirectional. The unidirectionality is achieved by specifying RCE_SEND_ONLY or RCE_RECEIVE_ONLY flag when creating media_stream.

-

If RCE_RTCP was given when creating media_stream, you can get the uvgrtp::rtcp object with get_rtcp()-function.

+

If RCE_RTCP was given when creating media_stream, you can get the uvgrtp::rtcp object with get_rtcp()-function.

media_stream corresponds to one RTP session in RFC 3550.

Definition at line 53 of file media_stream.hh.

@@ -151,25 +153,18 @@

rtp_error_t uvgrtp::media_stream::add_srtp_ctx ( - uint8_t *  - key, + uint8_t * key, - uint8_t *  - salt  - - - - ) - + uint8_t * salt )

Add keying information for user-managed SRTP session.

-

For user-managed SRTP session (flag RCE_SRTP_KMNGMNT_USER), the media stream is not started until SRTP key has been added and all calls to push_frame() will fail.

+

For user-managed SRTP session (flag RCE_SRTP_KMNGMNT_USER), the media stream is not started until SRTP key has been added and all calls to push_frame() will fail.

Parameters
@@ -198,19 +193,12 @@

rtp_error_t uvgrtp::media_stream::configure_ctx

- - + - - - - - - - +
keySRTP master key, default is 128-bit long
(int rcc_flag, int rcc_flag,
ssize_t value 
)ssize_t value )

Asynchronous way of getting frames.

-

Receive hook is an alternative to polling frames using uvgrtp::media_stream::pull_frame(). Instead of application asking from uvgRTP if there are any new frames available, uvgRTP will notify the application when a frame has been received

+

Receive hook is an alternative to polling frames using uvgrtp::media_stream::pull_frame(). Instead of application asking from uvgRTP if there are any new frames available, uvgRTP will notify the application when a frame has been received

The hook should not be used for media processing as it will block the receiver from reading more frames. Instead, it should only be used as an interface between uvgRTP and the calling application where the frame hand-off happens.

Parameters
@@ -360,7 +340,7 @@

uvgrtp::frame::rtp_frame * uvgrtp::media_stream::pull_frame

- +
())
@@ -387,8 +367,7 @@

uvgrtp::frame::rtp_frame * uvgrtp::media_stream::pull_frame ( - size_t  - timeout_ms) + size_t timeout_ms) @@ -421,25 +400,17 @@

rtp_error_t uvgrtp::media_stream::push_frame ( - std::unique_ptr< uint8_t[]>  - data, + std::unique_ptr< uint8_t[]> data, - size_t  - data_len, + size_t data_len, - int  - rtp_flags  - - - - ) - + int rtp_flags )

@@ -809,7 +734,7 @@

rtp_error_t uvgrtp::media_stream::start_zrtp ( - ) + ) @@ -818,7 +743,7 @@

  • Use flags RCE_SRTP + RCE_SRTP_KMNGMNT_ZRTP + (RCE_ZRTP_DIFFIE_HELLMAN_MODE/RCE_ZRTP_MULTISTREAM_MODE) to automatically start ZRTP negotiation when creating a media stream.
  • -
  • Use flags RCE_SRTP + (RCE_ZRTP_DIFFIE_HELLMAN_MODE/RCE_ZRTP_MULTISTREAM_MODE) and after creating the media stream, call start_zrtp() to manually start the ZRTP negotiation
  • +
  • Use flags RCE_SRTP + (RCE_ZRTP_DIFFIE_HELLMAN_MODE/RCE_ZRTP_MULTISTREAM_MODE) and after creating the media stream, call start_zrtp() to manually start the ZRTP negotiation
  • Returns
    RTP error code
    Return values
    @@ -838,7 +763,7 @@

    diff --git a/docs/html/classuvgrtp_1_1rtcp-members.html b/docs/html/classuvgrtp_1_1rtcp-members.html index 7bbb9c40..6c90195e 100644 --- a/docs/html/classuvgrtp_1_1rtcp-members.html +++ b/docs/html/classuvgrtp_1_1rtcp-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -98,7 +100,7 @@

    diff --git a/docs/html/classuvgrtp_1_1rtcp.html b/docs/html/classuvgrtp_1_1rtcp.html index c9278398..33a47278 100644 --- a/docs/html/classuvgrtp_1_1rtcp.html +++ b/docs/html/classuvgrtp_1_1rtcp.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::rtcp Class Reference + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -82,63 +84,63 @@

    RTCP instance handles all incoming and outgoing RTCP traffic, including report generation. - More...

    + More...

    #include <rtcp.hh>

    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

    Public Member Functions

    rtp_error_t send_sdes_packet (const std::vector< uvgrtp::frame::rtcp_sdes_item > &items)
    rtp_error_t send_sdes_packet (const std::vector< uvgrtp::frame::rtcp_sdes_item > &items)
     Send an RTCP SDES packet.
     
    rtp_error_t send_app_packet (const char *name, uint8_t subtype, uint32_t payload_len, const uint8_t *payload)
    rtp_error_t send_app_packet (const char *name, uint8_t subtype, uint32_t payload_len, const uint8_t *payload)
     Send an RTCP APP packet.
     
    rtp_error_t send_bye_packet (std::vector< uint32_t > ssrcs)
    rtp_error_t send_bye_packet (std::vector< uint32_t > ssrcs)
     Send an RTCP BYE packet.
     
    void set_ts_info (uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start)
    void set_ts_info (uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start)
     Provide timestamping information for RTCP.
     
    rtp_error_t install_sender_hook (void(*hook)(uvgrtp::frame::rtcp_sender_report *))
    rtp_error_t install_sender_hook (void(*hook)(uvgrtp::frame::rtcp_sender_report *))
     Install an RTCP Sender Report hook.
     
    rtp_error_t install_sender_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sender_report >)> sr_handler)
    rtp_error_t install_sender_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sender_report >)> sr_handler)
     Install an RTCP Sender Report hook.
     
    rtp_error_t install_receiver_hook (void(*hook)(uvgrtp::frame::rtcp_receiver_report *))
    rtp_error_t install_receiver_hook (void(*hook)(uvgrtp::frame::rtcp_receiver_report *))
     Install an RTCP Receiver Report hook.
     
    rtp_error_t install_receiver_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_receiver_report >)> rr_handler)
    rtp_error_t install_receiver_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_receiver_report >)> rr_handler)
     Install an RTCP Receiver Report hook.
     
    rtp_error_t install_sdes_hook (void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))
    rtp_error_t install_sdes_hook (void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))
     Install an RTCP SDES packet hook.
     
    rtp_error_t install_sdes_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sdes_packet >)> sdes_handler)
    rtp_error_t install_sdes_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sdes_packet >)> sdes_handler)
     Install an RTCP SDES packet hook.
     
    rtp_error_t install_app_hook (void(*hook)(uvgrtp::frame::rtcp_app_packet *))
    rtp_error_t install_app_hook (void(*hook)(uvgrtp::frame::rtcp_app_packet *))
     Install an RTCP APP packet hook.
     
    rtp_error_t install_app_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_app_packet >)> app_handler)
    rtp_error_t install_app_hook (std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_app_packet >)> app_handler)
     Install an RTCP APP packet hook.
     
    rtp_error_t install_send_app_hook (std::string app_name, std::function< std::unique_ptr< uint8_t[]>(uint8_t &subtype, uint32_t &payload_len)> app_sending_func)
    rtp_error_t install_send_app_hook (std::string app_name, std::function< std::unique_ptr< uint8_t[]>(uint8_t &subtype, uint32_t &payload_len)> app_sending_func)
     Install hook for one type of APP packets.
     
    rtp_error_t remove_all_hooks ()
    rtp_error_t remove_all_hooks ()
     Remove all installed hooks for RTCP.
     
    rtp_error_t remove_send_app_hook (std::string app_name)
    rtp_error_t remove_send_app_hook (std::string app_name)
     Remove a hook for sending APP packets *.
     

    Detailed Description

    RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.

    If media_stream was created with RCE_RTCP flag, RTCP is enabled. RTCP periodically sends compound RTCP packets. The bit rate of RTP session influences the reporting interval, but changing this has not yet been implemented.

    -

    The compound RTCP packet begins with either Sender Reports if we sent RTP packets recently or Receiver Report if we didn't send RTP packets recently. Both of these report types include report blocks for all the RTP sources we have received packets from during reporting period. The compound packets also always have an SDES packet and calling send_sdes_packet()-function will modify the contents of this SDES packet.

    -

    You can use the APP packet to test new RTCP packet types using the send_app_packet()-function. The APP packets are added to these periodically sent compound packets.

    +

    The compound RTCP packet begins with either Sender Reports if we sent RTP packets recently or Receiver Report if we didn't send RTP packets recently. Both of these report types include report blocks for all the RTP sources we have received packets from during reporting period. The compound packets also always have an SDES packet and calling send_sdes_packet()-function will modify the contents of this SDES packet.

    +

    You can use the APP packet to test new RTCP packet types using the send_app_packet()-function. The APP packets are added to these periodically sent compound packets.

    See RFC 3550 section 6 for more details.

    Definition at line 120 of file rtcp.hh.

    @@ -152,8 +154,7 @@

    rtp_error_t uvgrtp::rtcp::install_app_hook ( - std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_app_packet >)>  - app_handler) + std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_app_packet >)> app_handler) @@ -186,8 +187,7 @@

    rtp_error_t uvgrtp::rtcp::install_app_hook ( - void(*)(uvgrtp::frame::rtcp_app_packet *)  - hook) + void(*)(uvgrtp::frame::rtcp_app_packet *) hook) @@ -220,8 +220,7 @@

    rtp_error_t uvgrtp::rtcp::install_receiver_hook ( - std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_receiver_report >)>  - rr_handler) + std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_receiver_report >)> rr_handler) @@ -254,8 +253,7 @@

    rtp_error_t uvgrtp::rtcp::install_receiver_hook ( - void(*)(uvgrtp::frame::rtcp_receiver_report *)  - hook) + void(*)(uvgrtp::frame::rtcp_receiver_report *) hook) @@ -288,8 +286,7 @@

    rtp_error_t uvgrtp::rtcp::install_sdes_hook ( - std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sdes_packet >)>  - sdes_handler) + std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sdes_packet >)> sdes_handler) @@ -322,8 +319,7 @@

    rtp_error_t uvgrtp::rtcp::install_sdes_hook ( - void(*)(uvgrtp::frame::rtcp_sdes_packet *)  - hook) + void(*)(uvgrtp::frame::rtcp_sdes_packet *) hook) @@ -356,19 +352,12 @@

    rtp_error_t uvgrtp::rtcp::install_send_app_hook ( - std::string  - app_name, + std::string app_name, - std::function< std::unique_ptr< uint8_t[]>(uint8_t &subtype, uint32_t &payload_len)>  - app_sending_func  - - - - ) - + std::function< std::unique_ptr< uint8_t[]>(uint8_t &subtype, uint32_t &payload_len)> app_sending_func )

    @@ -699,7 +666,7 @@

    diff --git a/docs/html/classuvgrtp_1_1session-members.html b/docs/html/classuvgrtp_1_1session-members.html index 596035b3..cb384f9f 100644 --- a/docs/html/classuvgrtp_1_1session-members.html +++ b/docs/html/classuvgrtp_1_1session-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -86,7 +88,7 @@

    diff --git a/docs/html/classuvgrtp_1_1session.html b/docs/html/classuvgrtp_1_1session.html index ff09a075..f2226263 100644 --- a/docs/html/classuvgrtp_1_1session.html +++ b/docs/html/classuvgrtp_1_1session.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::session Class Reference + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -82,19 +84,19 @@

    Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects. - More...

    + More...

    #include <session.hh>

    - + - + - +

    Public Member Functions

    uvgrtp::media_streamcreate_stream (uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)
    uvgrtp::media_streamcreate_stream (uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)
     Create a uni- or bidirectional media stream.
     
    uvgrtp::media_streamcreate_stream (uint16_t port, rtp_format_t fmt, int rce_flags)
    uvgrtp::media_streamcreate_stream (uint16_t port, rtp_format_t fmt, int rce_flags)
     Create a unidirectional media_stream for an RTP session.
     
    rtp_error_t destroy_stream (uvgrtp::media_stream *stream)
    rtp_error_t destroy_stream (uvgrtp::media_stream *stream)
     Destroy a media stream.
     
    @@ -113,25 +115,17 @@

    uvgrtp::media_stream * uvgrtp::session::create_stream ( - uint16_t  - port, + uint16_t port, - rtp_format_t  - fmt, + rtp_format_t fmt, - int  - rce_flags  - - - - ) - + int rce_flags )

    @@ -167,31 +161,22 @@

    uvgrtp::media_stream * uvgrtp::session::create_stream ( - uint16_t  - src_port, + uint16_t src_port, - uint16_t  - dst_port, + uint16_t dst_port, - rtp_format_t  - fmt, + rtp_format_t fmt, - int  - rce_flags  - - - - ) - + int rce_flags )

    @@ -229,8 +214,7 @@

    rtp_error_t uvgrtp::session::destroy_stream ( - uvgrtp::media_stream *  - stream) + uvgrtp::media_stream * stream) @@ -261,7 +245,7 @@

    diff --git a/docs/html/clock_8hh_source.html b/docs/html/clock_8hh_source.html index 7126aa3b..9a932651 100644 --- a/docs/html/clock_8hh_source.html +++ b/docs/html/clock_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: clock.hh Source File + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + +
    diff --git a/docs/html/context_8hh_source.html b/docs/html/context_8hh_source.html index 3ea263e8..d5307adc 100644 --- a/docs/html/context_8hh_source.html +++ b/docs/html/context_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: context.hh Source File + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + +
    12 class session;
    13 class socketfactory;
    14
    +
    18 class context {
    19 public:
    @@ -118,22 +126,23 @@
    94 std::string cname_;
    95 std::shared_ptr<uvgrtp::socketfactory> sfp_;
    96 };
    +
    97}
    98
    99namespace uvg_rtp = uvgrtp;
    -
    Provides CNAME isolation and can be used to create uvgrtp::session objects.
    Definition: context.hh:18
    +
    Provides CNAME isolation and can be used to create uvgrtp::session objects.
    Definition context.hh:18
    bool crypto_enabled() const
    Has Crypto++ been included in uvgRTP library.
    rtp_error_t destroy_session(uvgrtp::session *session)
    Destroy RTP session and all of its media streams.
    ~context()
    RTP context destructor.
    uvgrtp::session * create_session(std::string address)
    Create a new RTP session.
    context()
    RTP context constructor.
    uvgrtp::session * create_session(std::pair< std::string, std::string > addresses)
    Create a new RTP session between two IP addresses.
    -
    Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.
    Definition: session.hh:27
    +
    Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.
    Definition session.hh:27

    diff --git a/docs/html/dir_9cba3ccb450b89ac6f0c2a18abcbadf0.html b/docs/html/dir_9cba3ccb450b89ac6f0c2a18abcbadf0.html index 4ad5c569..31abcc7e 100644 --- a/docs/html/dir_9cba3ccb450b89ac6f0c2a18abcbadf0.html +++ b/docs/html/dir_9cba3ccb450b89ac6f0c2a18abcbadf0.html @@ -3,12 +3,14 @@ - + uvgRTP: html Directory Reference + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -80,7 +82,7 @@
    diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html index e50e73e2..882495ca 100644 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -3,12 +3,14 @@ - + uvgRTP: include Directory Reference + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -80,13 +82,13 @@ - +

    Directories

    directory  uvgrtp
     uvgrtp
     
    diff --git a/docs/html/dir_e3f96ff476f8286b6e150580a2f7bd74.html b/docs/html/dir_e3f96ff476f8286b6e150580a2f7bd74.html index fd92f351..8eb72f9f 100644 --- a/docs/html/dir_e3f96ff476f8286b6e150580a2f7bd74.html +++ b/docs/html/dir_e3f96ff476f8286b6e150580a2f7bd74.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp Directory Reference + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -80,31 +82,31 @@ - + - + - + - + - + - + - + - + - + - +

    Files

    file  clock.hh [code]
     clock.hh
     
    file  context.hh [code]
     context.hh
     
    file  frame.hh [code]
     frame.hh
     
    file  lib.hh [code]
     lib.hh
     
    file  media_stream.hh [code]
     media_stream.hh
     
    file  rtcp.hh [code]
     rtcp.hh
     
    file  session.hh [code]
     session.hh
     
    file  util.hh [code]
     util.hh
     
    file  version.hh [code]
     version.hh
     
    file  wrapper_c.hh [code]
     wrapper_c.hh
     
    diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css index 08cc53ab..7b7d851b 100644 --- a/docs/html/doxygen.css +++ b/docs/html/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.9.6*/ +/* The standard CSS for doxygen 1.10.0*/ html { /* page base colors */ @@ -39,7 +39,9 @@ html { --icon-background-color: #728DC1; --icon-foreground-color: white; ---icon-doc-image: url('doc.png'); +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); /* brief member declaration list */ --memdecl-background-color: #F9FAFC; @@ -100,6 +102,7 @@ html { --toc-background-color: #F4F6FA; --toc-border-color: #D8DFEE; --toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); /** search field */ --search-background-color: white; @@ -125,6 +128,7 @@ html { --code-preprocessor-color: #806020; --code-string-literal-color: #002080; --code-char-literal-color: #008080; +--code-xml-cdata-color: black; --code-vhdl-digit-color: #FF00FF; --code-vhdl-char-color: #000000; --code-vhdl-keyword-color: #700070; @@ -141,6 +145,7 @@ html { --fragment-lineno-link-bg-color: #D8D8D8; --fragment-lineno-link-hover-fg-color: #4665A2; --fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; --tooltip-foreground-color: black; --tooltip-background-color: white; --tooltip-border-color: gray; @@ -148,10 +153,15 @@ html { --tooltip-declaration-color: #006318; --tooltip-link-color: #4665A2; --tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); /** font-family */ --font-family-normal: Roboto,sans-serif; ---font-family-monospace: monospace,fixed; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; --font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; --font-family-title: Tahoma,Arial,sans-serif; --font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; @@ -159,6 +169,28 @@ html { --font-family-icon: Arial,Helvetica; --font-family-tooltip: Roboto,sans-serif; +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; } @media (prefers-color-scheme: dark) { @@ -203,7 +235,9 @@ html { --icon-background-color: #334975; --icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.png'); +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); /* brief member declaration list */ --memdecl-background-color: #0B101A; @@ -264,6 +298,7 @@ html { --toc-background-color: #151E30; --toc-border-color: #202E4A; --toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); /** search field */ --search-background-color: black; @@ -289,14 +324,15 @@ html { --code-preprocessor-color: #65CABE; --code-string-literal-color: #7EC699; --code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; --code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #000000; ---code-vhdl-keyword-color: #700070; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; --code-vhdl-logic-color: #FF0000; --code-link-color: #79C0FF; --code-external-link-color: #79C0FF; --fragment-foreground-color: #C9D1D9; ---fragment-background-color: black; +--fragment-background-color: #090D16; --fragment-border-color: #30363D; --fragment-lineno-border-color: #30363D; --fragment-lineno-background-color: black; @@ -305,6 +341,7 @@ html { --fragment-lineno-link-bg-color: #303030; --fragment-lineno-link-hover-fg-color: #8E96A1; --fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; --tooltip-foreground-color: #C9D1D9; --tooltip-background-color: #202020; --tooltip-border-color: #C9D1D9; @@ -312,10 +349,15 @@ html { --tooltip-declaration-color: #20C348; --tooltip-link-color: #79C0FF; --tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); /** font-family */ --font-family-normal: Roboto,sans-serif; ---font-family-monospace: monospace,fixed; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; --font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; --font-family-title: Tahoma,Arial,sans-serif; --font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; @@ -323,6 +365,28 @@ html { --font-family-icon: Arial,Helvetica; --font-family-tooltip: Roboto,sans-serif; +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; }} body { background-color: var(--page-background-color); @@ -339,8 +403,6 @@ body, table, div, p, dl { /* @group Heading Levels */ .title { - font-weight: 400; - font-size: 14px; font-family: var(--font-family-normal); line-height: 28px; font-size: 150%; @@ -473,6 +535,12 @@ div.qindex{ color: var(--index-separator-color); } +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + dt.alphachar{ font-size: 180%; font-weight: bold; @@ -532,7 +600,13 @@ a { } a:hover { - text-decoration: underline; + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); } a.el { @@ -608,37 +682,70 @@ ul.multicol { .fragment { text-align: left; direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-x: auto; overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); } pre.fragment { - border: 1px solid var(--fragment-border-color); - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); - padding: 4px 6px; - margin: 4px 8px 4px 2px; + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: var(--font-family-monospace); - font-size: 105%; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); } -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - color: var(--fragment-foreground-color); - background-color: var(--fragment-background-color); - border: 1px solid var(--fragment-border-color); +.clipboard.success { + border-color: var(--fragment-copy-ok-color); } div.line { font-family: var(--font-family-monospace); font-size: 13px; min-height: 13px; - line-height: 1.0; + line-height: 1.2; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ @@ -671,6 +778,18 @@ div.line.glow { box-shadow: 0 0 10px var(--glow-color); } +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} span.lineno { padding-right: 4px; @@ -742,10 +861,6 @@ img.light-mode-visible { display: none; } -img.formulaDsp { - -} - img.formulaInl, img.inline { vertical-align: middle; } @@ -808,6 +923,10 @@ span.charliteral { color: var(--code-char-literal-color); } +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + span.vhdldigit { color: var(--code-vhdl-digit-color); } @@ -1041,17 +1160,25 @@ dl.reflist dd { .paramtype { white-space: nowrap; + padding: 0px; + padding-bottom: 1px; } .paramname { - color: var(--memdef-param-name-color); white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; } + .paramname em { + color: var(--memdef-param-name-color); font-style: normal; + margin-right: 1px; } -.paramname code { - line-height: 14px; + +.paramname .paramdefval { + font-family: var(--font-family-monospace); } .params, .retval, .exception, .tparams { @@ -1222,8 +1349,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-open-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -1233,8 +1359,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-closed-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -1387,7 +1512,6 @@ table.fieldtable { { height:32px; display:block; - text-decoration: none; outline: none; color: var(--nav-text-normal-color); font-family: var(--font-family-nav); @@ -1476,7 +1600,8 @@ dl { padding: 0 0 0 0; } -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +/* + dl.section { margin-left: 0px; padding-left: 0px; @@ -1531,8 +1656,101 @@ dl.bug { border-color: #C08050; } +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + dl.section dd { - margin-bottom: 6px; + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); } @@ -1547,12 +1765,12 @@ dl.section dd { vertical-align: bottom; border-collapse: separate; } - + #projectlogo img -{ +{ border: 0px none; } - + #projectalign { vertical-align: middle; @@ -1653,7 +1871,7 @@ div.toc { } div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; font: 10px/1.2 var(--font-family-toc); margin-top: 5px; padding-left: 10px; @@ -1682,11 +1900,11 @@ div.toc li.level2 { } div.toc li.level3 { - margin-left: 30px; + margin-left: 15px; } div.toc li.level4 { - margin-left: 45px; + margin-left: 15px; } span.emoji { diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg index d42dad52..79a76354 100644 --- a/docs/html/doxygen.svg +++ b/docs/html/doxygen.svg @@ -1,4 +1,6 @@ + @@ -17,7 +19,7 @@ - + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js index 1f4cd14a..24dfe9c8 100644 --- a/docs/html/dynsections.js +++ b/docs/html/dynsections.js @@ -22,106 +22,177 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l
    '); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; /* @license-end */ -$(document).ready(function() { +$(function() { $('.code,.codeRef').each(function() { $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; diff --git a/docs/html/files.html b/docs/html/files.html index 6ac9e123..d18d165d 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -3,12 +3,14 @@ - + uvgRTP: File List + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -74,9 +76,9 @@
    Here is a list of all documented files with brief descriptions:
    -
    [detail level 123]
    - - +
    [detail level 123]
      include
      uvgrtp
    + + @@ -92,7 +94,7 @@ diff --git a/docs/html/frame_8hh_source.html b/docs/html/frame_8hh_source.html index 06768c4f..a8052b66 100644 --- a/docs/html/frame_8hh_source.html +++ b/docs/html/frame_8hh_source.html @@ -3,12 +3,14 @@ - +uvgRTP: frame.hh Source File + + @@ -21,7 +23,7 @@ @@ -30,7 +32,7 @@
      include
      uvgrtp
     clock.hh
     context.hh
     frame.hh
    -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    - + +
    64 uint8_t *data = nullptr;
    65 });
    66
    +
    68 struct rtp_frame {
    69 struct rtp_header header;
    70 uint32_t *csrc = nullptr;
    @@ -156,7 +164,9 @@
    83 uint8_t *dgram = nullptr; /* pointer to the UDP datagram (for internal use only) */
    84 size_t dgram_size = 0; /* size of the UDP datagram */
    86 };
    +
    87
    +
    89 struct rtcp_header {
    92 uint8_t version = 0;
    94 uint8_t padding = 0;
    @@ -168,7 +178,9 @@
    104 uint8_t pkt_type = 0;
    106 uint16_t length = 0;
    107 };
    +
    108
    +
    112 uint32_t ntp_msw = 0;
    114 uint32_t ntp_lsw = 0;
    @@ -176,7 +188,9 @@
    117 uint32_t pkt_cnt = 0;
    119 uint32_t byte_cnt = 0;
    120 };
    +
    121
    +
    124 uint32_t ssrc = 0;
    125 uint8_t fraction = 0;
    @@ -186,36 +200,48 @@
    129 uint32_t lsr = 0; /* last Sender Report */
    130 uint32_t dlsr = 0; /* delay since last Sender Report */
    131 };
    +
    132
    +
    135 struct rtcp_header header;
    136 uint32_t ssrc = 0;
    137 std::vector<rtcp_report_block> report_blocks;
    138 };
    +
    139
    +
    142 struct rtcp_header header;
    143 uint32_t ssrc = 0;
    144 struct rtcp_sender_info sender_info;
    145 std::vector<rtcp_report_block> report_blocks;
    146 };
    +
    147
    +
    150 uint8_t type = 0;
    151 uint8_t length = 0;
    152 uint8_t *data = nullptr;
    153 };
    +
    154
    +
    157 uint32_t ssrc = 0;
    158 std::vector<rtcp_sdes_item> items;
    159 };
    +
    160
    +
    163 struct rtcp_header header;
    164 std::vector<rtcp_sdes_chunk> chunks;
    165 };
    +
    166
    +
    169 struct rtcp_header header;
    170 uint32_t ssrc = 0;
    @@ -223,22 +249,30 @@
    172 uint8_t *payload = nullptr;
    174 size_t payload_len = 0;
    175 };
    +
    176
    +
    178 struct rtcp_fir {
    179 uint32_t ssrc = 0;
    180 uint8_t seq = 0;
    181 };
    +
    +
    183 struct rtcp_sli {
    184 uint16_t first = 0;
    185 uint16_t num = 0;
    186 uint8_t picture_id = 0;
    187 };
    +
    +
    189 struct rtcp_rpsi {
    190 uint8_t pb = 0;
    191 uint8_t pt = 0;
    192 uint8_t* str = nullptr;
    193 };
    +
    194
    +
    196 struct rtcp_fb_fci {
    197
    198 union {
    @@ -247,7 +281,9 @@
    201 rtcp_rpsi rpsi;
    202 };
    203 };
    +
    204
    +
    207 struct rtcp_header header;
    208 uint32_t sender_ssrc = 0;
    @@ -255,6 +291,7 @@
    210 std::vector<rtcp_fb_fci> items;
    212 size_t payload_len = 0;
    213 };
    +
    214
    215
    216 PACK(struct zrtp_frame {
    @@ -308,40 +345,40 @@
    264}
    265
    266namespace uvg_rtp = uvgrtp;
    -
    See RFC 3550 section 6.7
    Definition: frame.hh:168
    -
    size_t payload_len
    Size of the payload in bytes. Added by uvgRTP to help process the payload.
    Definition: frame.hh:174
    -
    RTCP Feedback Control Information, See RFC 4585 section 6.1.
    Definition: frame.hh:196
    -
    Feedback message. See RFC 4585 section 6.1.
    Definition: frame.hh:206
    -
    size_t payload_len
    Size of the payload in bytes. Added by uvgRTP to help process the payload.
    Definition: frame.hh:212
    -
    Full Intra Request, See RFC 5104 section 4.3.1.
    Definition: frame.hh:178
    -
    Header of for all RTCP packets defined in RFC 3550 section 6
    Definition: frame.hh:89
    -
    uint8_t pkt_type
    Identifies the RTCP packet type.
    Definition: frame.hh:104
    -
    uint8_t version
    This field identifies the version of RTP. The version defined by RFC 3550 is two (2).
    Definition: frame.hh:92
    -
    uint8_t fmt
    Feedback message type (FMT), specified in RFC 5104 section 4.3. Alternative to count and pkt_subtype.
    Definition: frame.hh:101
    -
    uint16_t length
    Length of the whole message measured in 32-bit words.
    Definition: frame.hh:106
    -
    uint8_t padding
    Does this packet contain padding at the end.
    Definition: frame.hh:94
    -
    uint8_t pkt_subtype
    Subtype in APP packets. Alternative to count.
    Definition: frame.hh:99
    -
    uint8_t count
    Source count or report count. Alternative to pkt_subtype.
    Definition: frame.hh:97
    -
    See RFC 3550 section 6.4.2
    Definition: frame.hh:134
    -
    See RFC 3550 section 6.4.1
    Definition: frame.hh:123
    -
    Reference Picture Selection Indication, See RFC 4585 section 6.3.3.
    Definition: frame.hh:189
    -
    See RFC 3550 section 6.5
    Definition: frame.hh:156
    -
    See RFC 3550 section 6.5
    Definition: frame.hh:149
    -
    See RFC 3550 section 6.5
    Definition: frame.hh:162
    -
    See RFC 3550 section 6.4.1
    Definition: frame.hh:110
    -
    uint32_t rtp_ts
    RTP timestamp corresponding to this NTP timestamp.
    Definition: frame.hh:116
    -
    uint32_t byte_cnt
    Also known as octet count.
    Definition: frame.hh:119
    -
    uint32_t ntp_lsw
    NTP timestamp, least significant word.
    Definition: frame.hh:114
    -
    uint32_t ntp_msw
    NTP timestamp, most significant word.
    Definition: frame.hh:112
    -
    See RFC 3550 section 6.4.1
    Definition: frame.hh:141
    -
    Slice Loss Indication, See RFC 4585 section 6.3.2.
    Definition: frame.hh:183
    -
    See RFC 3550 section 5
    Definition: frame.hh:68
    -
    size_t payload_len
    Length of the packet payload in bytes added by uvgRTP to help process the frame.
    Definition: frame.hh:79
    +
    See RFC 3550 section 6.7
    Definition frame.hh:168
    +
    size_t payload_len
    Size of the payload in bytes. Added by uvgRTP to help process the payload.
    Definition frame.hh:174
    +
    RTCP Feedback Control Information, See RFC 4585 section 6.1.
    Definition frame.hh:196
    +
    Feedback message. See RFC 4585 section 6.1.
    Definition frame.hh:206
    +
    size_t payload_len
    Size of the payload in bytes. Added by uvgRTP to help process the payload.
    Definition frame.hh:212
    +
    Full Intra Request, See RFC 5104 section 4.3.1.
    Definition frame.hh:178
    +
    Header of for all RTCP packets defined in RFC 3550 section 6
    Definition frame.hh:89
    +
    uint8_t pkt_type
    Identifies the RTCP packet type.
    Definition frame.hh:104
    +
    uint8_t version
    This field identifies the version of RTP. The version defined by RFC 3550 is two (2).
    Definition frame.hh:92
    +
    uint8_t fmt
    Feedback message type (FMT), specified in RFC 5104 section 4.3. Alternative to count and pkt_subtype.
    Definition frame.hh:101
    +
    uint16_t length
    Length of the whole message measured in 32-bit words.
    Definition frame.hh:106
    +
    uint8_t padding
    Does this packet contain padding at the end.
    Definition frame.hh:94
    +
    uint8_t pkt_subtype
    Subtype in APP packets. Alternative to count.
    Definition frame.hh:99
    +
    uint8_t count
    Source count or report count. Alternative to pkt_subtype.
    Definition frame.hh:97
    +
    See RFC 3550 section 6.4.2
    Definition frame.hh:134
    +
    See RFC 3550 section 6.4.1
    Definition frame.hh:123
    +
    Reference Picture Selection Indication, See RFC 4585 section 6.3.3.
    Definition frame.hh:189
    +
    See RFC 3550 section 6.5
    Definition frame.hh:156
    +
    See RFC 3550 section 6.5
    Definition frame.hh:149
    +
    See RFC 3550 section 6.5
    Definition frame.hh:162
    +
    See RFC 3550 section 6.4.1
    Definition frame.hh:110
    +
    uint32_t rtp_ts
    RTP timestamp corresponding to this NTP timestamp.
    Definition frame.hh:116
    +
    uint32_t byte_cnt
    Also known as octet count.
    Definition frame.hh:119
    +
    uint32_t ntp_lsw
    NTP timestamp, least significant word.
    Definition frame.hh:114
    +
    uint32_t ntp_msw
    NTP timestamp, most significant word.
    Definition frame.hh:112
    +
    See RFC 3550 section 6.4.1
    Definition frame.hh:141
    +
    Slice Loss Indication, See RFC 4585 section 6.3.2.
    Definition frame.hh:183
    +
    See RFC 3550 section 5
    Definition frame.hh:68
    +
    size_t payload_len
    Length of the packet payload in bytes added by uvgRTP to help process the frame.
    Definition frame.hh:79
    diff --git a/docs/html/functions.html b/docs/html/functions.html index daf051db..f7f1750b 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -3,12 +3,14 @@ - + uvgRTP: Class Members + + @@ -21,7 +23,7 @@ -
    uvgRTP 3.0.0 +
    uvgRTP 3.1.0
    An open-source library for RTP/SRTP media delivery
    @@ -30,7 +32,7 @@
    - + @@ -168,7 +170,7 @@

    - ~ -

      diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html index 6e34af17..b0435cba 100644 --- a/docs/html/functions_func.html +++ b/docs/html/functions_func.html @@ -3,12 +3,14 @@ - + uvgRTP: Class Members - Functions + + @@ -21,7 +23,7 @@ -
      uvgRTP 3.0.0 +
      uvgRTP 3.1.0
      An open-source library for RTP/SRTP media delivery
      @@ -30,7 +32,7 @@
      - + @@ -70,7 +72,7 @@
      -  +
      Here is a list of all documented functions with links to the class documentation for each member:

      - a -

      diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index f3f34bd9..899598e9 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -3,12 +3,14 @@ - + uvgRTP: Class Members - Variables + + @@ -21,7 +23,7 @@ -
      uvgRTP 3.0.0 +
      uvgRTP 3.1.0
      An open-source library for RTP/SRTP media delivery
      @@ -30,7 +32,7 @@
      - + @@ -70,7 +72,7 @@
      diff --git a/docs/html/globals.html b/docs/html/globals.html index 1fb17678..2c52dbc8 100644 --- a/docs/html/globals.html +++ b/docs/html/globals.html @@ -3,12 +3,14 @@ - + uvgRTP: File Members + + @@ -21,7 +23,7 @@ -
      uvgRTP 3.0.0 +
      uvgRTP 3.1.0
      An open-source library for RTP/SRTP media delivery
      @@ -30,7 +32,7 @@
      - + @@ -146,6 +148,7 @@

      - r -

      • RTP_FORMAT_PCMU : util.hh
      • RTP_FORMAT_VDVI : util.hh
      • RTP_GENERIC_ERROR : util.hh
      • +
      • RTP_H26X_DO_NOT_AGGR : util.hh
      • RTP_INITIALIZED : util.hh
      • RTP_INVALID_VALUE : util.hh
      • RTP_MEMORY_ERROR : util.hh
      • @@ -164,7 +167,7 @@

        - r -

          diff --git a/docs/html/globals_enum.html b/docs/html/globals_enum.html index 7fd53da5..11ff08d1 100644 --- a/docs/html/globals_enum.html +++ b/docs/html/globals_enum.html @@ -3,12 +3,14 @@ - + uvgRTP: File Members + + @@ -21,7 +23,7 @@ -
          uvgRTP 3.0.0 +
          uvgRTP 3.1.0
          An open-source library for RTP/SRTP media delivery
          @@ -30,7 +32,7 @@
          - + @@ -70,7 +72,7 @@
            +
            Here is a list of all documented enums with links to the documentation:
            • RTP_CTX_CONFIGURATION_FLAGS : util.hh
            • RTP_CTX_ENABLE_FLAGS : util.hh
            • RTP_ERROR : util.hh
            • @@ -80,7 +82,7 @@
          diff --git a/docs/html/globals_eval.html b/docs/html/globals_eval.html index 044cb7fc..ec96ed6e 100644 --- a/docs/html/globals_eval.html +++ b/docs/html/globals_eval.html @@ -3,12 +3,14 @@ - + uvgRTP: File Members + + @@ -21,7 +23,7 @@ -
          uvgRTP 3.0.0 +
          uvgRTP 3.1.0
          An open-source library for RTP/SRTP media delivery
          @@ -30,7 +32,7 @@
          - + @@ -70,7 +72,7 @@
          -  +
          Here is a list of all documented enum values with links to the documentation:

          - r -

          • RCC_CLOCK_RATE : util.hh
          • @@ -141,6 +143,7 @@

            - r -

          diff --git a/docs/html/index.html b/docs/html/index.html index 92a623d0..7dbd4e09 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgRTP + + @@ -21,7 +23,7 @@ -
          uvgRTP 3.0.0 +
          uvgRTP 3.1.0
          An open-source library for RTP/SRTP media delivery
          @@ -30,7 +32,7 @@
          - + @@ -73,7 +75,7 @@
          uvgRTP
          -

          uvgRTP is an Real-Time Transport Protocol (RTP) library written in C++ with a focus on simple to use and high-efficiency media delivery over the Internet. It features an intuitive and easy-to-use Application Programming Interface (API), built-in support for transporting Versatile Video Coding (VVC), High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC) encoded video and Opus encoded audio. uvgRTP also supports End-to-End Encrypted (E2EE) media delivery using the combination of Secure RTP (SRTP) and ZRTP. uvgRTP has been designed to minimize memory operations to reduce its CPU usage and latency.

          +

          uvgRTP is an Real-Time Transport Protocol (RTP) library written in C++ with a focus on simple to use and high-efficiency media delivery over the Internet. It features an intuitive and easy-to-use Application Programming Interface (API), built-in support for transporting Versatile Video Coding (VVC), High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC) encoded video and Opus encoded audio. uvgRTP also supports End-to-End Encrypted (E2EE) media delivery using the combination of Secure RTP (SRTP) and ZRTP. uvgRTP has been designed to minimize memory operations to reduce its CPU usage and latency.

          uvgRTP is licensed under the permissive BSD 2-Clause License. This cross-platform library can be run on both Linux and Windows operating systems. Mac OS is also supported, but the support relies on community contributions. For SRTP/ZRTP support, uvgRTP uses the Crypto++ library.

          Currently supported specifications:

          + diff --git a/docs/html/lib_8hh_source.html b/docs/html/lib_8hh_source.html index 64b75fcb..b19c248a 100644 --- a/docs/html/lib_8hh_source.html +++ b/docs/html/lib_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: lib.hh Source File + + @@ -21,7 +23,7 @@ -
          uvgRTP 3.0.0 +
          uvgRTP 3.1.0
          An open-source library for RTP/SRTP media delivery
          @@ -30,7 +32,7 @@
          - + +
          diff --git a/docs/html/media__stream_8hh_source.html b/docs/html/media__stream_8hh_source.html index 2f32be78..8f97adf2 100644 --- a/docs/html/media__stream_8hh_source.html +++ b/docs/html/media__stream_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: media_stream.hh Source File + + @@ -21,7 +23,7 @@ -
          uvgRTP 3.0.0 +
          uvgRTP 3.1.0
          An open-source library for RTP/SRTP media delivery
          @@ -30,7 +32,7 @@
          - + +
          39 class media;
          40 }
          41
          +
          54 public:
          56 media_stream(std::string cname, std::string remote_addr, std::string local_addr, uint16_t src_port, uint16_t dst_port,
          @@ -259,10 +267,11 @@
          462 int snd_buf_size_;
          463 int rcv_buf_size_;
          464 };
          +
          465}
          466
          467namespace uvg_rtp = uvgrtp;
          -
          The media_stream is an entity which represents one RTP stream.
          Definition: media_stream.hh:53
          +
          The media_stream is an entity which represents one RTP stream.
          rtp_error_t push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, int rtp_flags)
          Send data to remote participant with a custom timestamp.
          rtp_error_t add_srtp_ctx(uint8_t *key, uint8_t *salt)
          Add keying information for user-managed SRTP session.
          rtp_error_t push_frame(uint8_t *data, size_t data_len, int rtp_flags)
          Send data to remote participant with a custom timestamp.
          @@ -278,13 +287,13 @@
          rtp_error_t push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, int rtp_flags)
          Send data to remote participant with a custom timestamp.
          rtp_error_t push_frame(uint8_t *data, size_t data_len, uint32_t ts, int rtp_flags)
          Send data to remote participant with a custom timestamp.
          int get_configuration_value(int rcc_flag)
          Get the values associated with configuration flags, see RTP_CTX_CONFIGURATION_FLAGS for more details.
          -
          RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.
          Definition: rtcp.hh:120
          -
          See RFC 3550 section 5
          Definition: frame.hh:68
          +
          RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.
          Definition rtcp.hh:120
          +
          See RFC 3550 section 5
          Definition frame.hh:68
          diff --git a/docs/html/menu.js b/docs/html/menu.js index b0b26936..717761d0 100644 --- a/docs/html/menu.js +++ b/docs/html/menu.js @@ -24,13 +24,12 @@ */ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { function makeTree(data,relPath) { - var result=''; + let result=''; if ('children' in data) { result+='
            '; - for (var i in data.children) { - var url; - var link; - link = data.children[i].url; + for (let i in data.children) { + let url; + const link = data.children[i].url; if (link.substring(0,1)=='^') { url = link.substring(1); } else { @@ -44,7 +43,7 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { } return result; } - var searchBoxHtml; + let searchBoxHtml; if (searchEnabled) { if (serverSide) { searchBoxHtml='
            '+ @@ -88,29 +87,28 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { if (searchBoxHtml) { $('#main-menu').append('
          • '); } - var $mainMenuState = $('#main-menu-state'); - var prevWidth = 0; + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; if ($mainMenuState.length) { - function initResizableIfExists() { + const initResizableIfExists = function() { if (typeof initResizable==='function') initResizable(); } // animate mobile menu - $mainMenuState.change(function(e) { - var $menu = $('#main-menu'); - var options = { duration: 250, step: initResizableIfExists }; + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; if (this.checked) { - options['complete'] = function() { $menu.css('display', 'block') }; + options['complete'] = () => $menu.css('display', 'block'); $menu.hide().slideDown(options); } else { - options['complete'] = function() { $menu.css('display', 'none') }; + options['complete'] = () => $menu.css('display', 'none'); $menu.show().slideUp(options); } }); // set default menu visibility - function resetState() { - var $menu = $('#main-menu'); - var $mainMenuState = $('#main-menu-state'); - var newWidth = $(window).outerWidth(); + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); if (newWidth!=prevWidth) { if ($(window).outerWidth()<768) { $mainMenuState.prop('checked',false); $menu.hide(); diff --git a/docs/html/rtcp_8hh_source.html b/docs/html/rtcp_8hh_source.html index a6cd5d1a..6f5cf982 100644 --- a/docs/html/rtcp_8hh_source.html +++ b/docs/html/rtcp_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: rtcp.hh Source File + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + +
            99 std::unique_ptr<uint8_t[]> payload;
            100 };
            102
            +
            120 class rtcp {
            121 public:
            123 rtcp(std::shared_ptr<uvgrtp::rtp> rtp, std::shared_ptr<std::atomic<std::uint32_t>> ssrc, std::shared_ptr<std::atomic<uint32_t>> remote_ssrc,
            @@ -589,10 +597,11 @@
            690
            691 size_t mtu_size_;
            692 };
            +
            693}
            694
            695namespace uvg_rtp = uvgrtp;
            -
            RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.
            Definition: rtcp.hh:120
            +
            RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.
            Definition rtcp.hh:120
            rtp_error_t install_receiver_hook(void(*hook)(uvgrtp::frame::rtcp_receiver_report *))
            Install an RTCP Receiver Report hook.
            rtp_error_t send_app_packet(const char *name, uint8_t subtype, uint32_t payload_len, const uint8_t *payload)
            Send an RTCP APP packet.
            rtp_error_t install_receiver_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_receiver_report >)> rr_handler)
            Install an RTCP Receiver Report hook.
            @@ -608,18 +617,18 @@
            rtp_error_t install_app_hook(void(*hook)(uvgrtp::frame::rtcp_app_packet *))
            Install an RTCP APP packet hook.
            rtp_error_t install_send_app_hook(std::string app_name, std::function< std::unique_ptr< uint8_t[]>(uint8_t &subtype, uint32_t &payload_len)> app_sending_func)
            Install hook for one type of APP packets.
            rtp_error_t install_sdes_hook(void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))
            Install an RTCP SDES packet hook.
            -
            See RFC 3550 section 6.7
            Definition: frame.hh:168
            -
            Header of for all RTCP packets defined in RFC 3550 section 6
            Definition: frame.hh:89
            -
            See RFC 3550 section 6.4.2
            Definition: frame.hh:134
            -
            See RFC 3550 section 6.5
            Definition: frame.hh:149
            -
            See RFC 3550 section 6.5
            Definition: frame.hh:162
            -
            See RFC 3550 section 6.4.1
            Definition: frame.hh:141
            -
            See RFC 3550 section 5
            Definition: frame.hh:68
            +
            See RFC 3550 section 6.7
            Definition frame.hh:168
            +
            Header of for all RTCP packets defined in RFC 3550 section 6
            Definition frame.hh:89
            +
            See RFC 3550 section 6.4.2
            Definition frame.hh:134
            +
            See RFC 3550 section 6.5
            Definition frame.hh:149
            +
            See RFC 3550 section 6.5
            Definition frame.hh:162
            +
            See RFC 3550 section 6.4.1
            Definition frame.hh:141
            +
            See RFC 3550 section 5
            Definition frame.hh:68
            diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js index 85877691..d5d00d49 100644 --- a/docs/html/search/all_0.js +++ b/docs/html/search/all_0.js @@ -1,4 +1,5 @@ var searchData= [ - ['add_5fsrtp_5fctx_0',['add_srtp_ctx',['../classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed',1,'uvgrtp::media_stream']]] + ['1_3a_20create_20context_0',['Step 1: Create context',['../index.html#autotoc_md3',1,'']]], + ['1_3a_20encryption_20optional_1',['Step 3.1: Encryption (optional)',['../index.html#autotoc_md6',1,'']]] ]; diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js index 92b38455..f602a4a9 100644 --- a/docs/html/search/all_1.js +++ b/docs/html/search/all_1.js @@ -1,4 +1,5 @@ var searchData= [ - ['byte_5fcnt_0',['byte_cnt',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce',1,'uvgrtp::frame::rtcp_sender_info']]] + ['2_3a_20configure_20media_5fstream_20optional_0',['Step 3.2: Configure media_stream (optional)',['../index.html#autotoc_md7',1,'']]], + ['2_3a_20create_20session_1',['Step 2: Create session',['../index.html#autotoc_md4',1,'']]] ]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js index bd1f5897..64bfd1d5 100644 --- a/docs/html/search/all_2.js +++ b/docs/html/search/all_2.js @@ -1,9 +1,6 @@ var searchData= [ - ['configure_5fctx_0',['configure_ctx',['../classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238',1,'uvgrtp::media_stream']]], - ['context_1',['context',['../classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a',1,'uvgrtp::context::context()'],['../classuvgrtp_1_1context.html',1,'uvgrtp::context']]], - ['count_2',['count',['../structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d',1,'uvgrtp::frame::rtcp_header']]], - ['create_5fsession_3',['create_session',['../classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266',1,'uvgrtp::context::create_session(std::pair< std::string, std::string > addresses)'],['../classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4',1,'uvgrtp::context::create_session(std::string address)']]], - ['create_5fstream_4',['create_stream',['../classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4',1,'uvgrtp::session::create_stream(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)'],['../classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416',1,'uvgrtp::session::create_stream(uint16_t port, rtp_format_t fmt, int rce_flags)']]], - ['crypto_5fenabled_5',['crypto_enabled',['../classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087',1,'uvgrtp::context']]] + ['3_201_3a_20encryption_20optional_0',['Step 3.1: Encryption (optional)',['../index.html#autotoc_md6',1,'']]], + ['3_202_3a_20configure_20media_5fstream_20optional_1',['Step 3.2: Configure media_stream (optional)',['../index.html#autotoc_md7',1,'']]], + ['3_3a_20create_20media_5fstream_2',['Step 3: Create media_stream',['../index.html#autotoc_md5',1,'']]] ]; diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js index 687611af..e8dfecdb 100644 --- a/docs/html/search/all_3.js +++ b/docs/html/search/all_3.js @@ -1,5 +1,4 @@ var searchData= [ - ['destroy_5fsession_0',['destroy_session',['../classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9',1,'uvgrtp::context']]], - ['destroy_5fstream_1',['destroy_stream',['../classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149',1,'uvgrtp::session']]] + ['4_3a_20sending_20data_0',['Step 4: Sending data',['../index.html#autotoc_md8',1,'']]] ]; diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js index 67fe1f91..7cc4852d 100644 --- a/docs/html/search/all_4.js +++ b/docs/html/search/all_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['fmt_0',['fmt',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de',1,'uvgrtp::frame::rtcp_header']]] + ['5_3a_20receiving_20data_0',['Step 5: Receiving data',['../index.html#autotoc_md9',1,'']]] ]; diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js index cddedd33..a23f5d45 100644 --- a/docs/html/search/all_5.js +++ b/docs/html/search/all_5.js @@ -1,6 +1,4 @@ var searchData= [ - ['get_5fconfiguration_5fvalue_0',['get_configuration_value',['../classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d',1,'uvgrtp::media_stream']]], - ['get_5frtcp_1',['get_rtcp',['../classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea',1,'uvgrtp::media_stream']]], - ['get_5fssrc_2',['get_ssrc',['../classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5',1,'uvgrtp::media_stream']]] + ['6_3a_20cleanup_0',['Step 6: Cleanup',['../index.html#autotoc_md10',1,'']]] ]; diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js index 1404b8eb..85877691 100644 --- a/docs/html/search/all_6.js +++ b/docs/html/search/all_6.js @@ -1,9 +1,4 @@ var searchData= [ - ['install_5fapp_5fhook_0',['install_app_hook',['../classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f',1,'uvgrtp::rtcp::install_app_hook(void(*hook)(uvgrtp::frame::rtcp_app_packet *))'],['../classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94',1,'uvgrtp::rtcp::install_app_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_app_packet >)> app_handler)']]], - ['install_5freceive_5fhook_1',['install_receive_hook',['../classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27',1,'uvgrtp::media_stream']]], - ['install_5freceiver_5fhook_2',['install_receiver_hook',['../classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602',1,'uvgrtp::rtcp::install_receiver_hook(void(*hook)(uvgrtp::frame::rtcp_receiver_report *))'],['../classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422',1,'uvgrtp::rtcp::install_receiver_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_receiver_report >)> rr_handler)']]], - ['install_5fsdes_5fhook_3',['install_sdes_hook',['../classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50',1,'uvgrtp::rtcp::install_sdes_hook(void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))'],['../classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40',1,'uvgrtp::rtcp::install_sdes_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sdes_packet >)> sdes_handler)']]], - ['install_5fsend_5fapp_5fhook_4',['install_send_app_hook',['../classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1',1,'uvgrtp::rtcp']]], - ['install_5fsender_5fhook_5',['install_sender_hook',['../classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1',1,'uvgrtp::rtcp::install_sender_hook(void(*hook)(uvgrtp::frame::rtcp_sender_report *))'],['../classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb',1,'uvgrtp::rtcp::install_sender_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sender_report >)> sr_handler)']]] + ['add_5fsrtp_5fctx_0',['add_srtp_ctx',['../classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed',1,'uvgrtp::media_stream']]] ]; diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js index bb020cce..92b38455 100644 --- a/docs/html/search/all_7.js +++ b/docs/html/search/all_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['length_0',['length',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0',1,'uvgrtp::frame::rtcp_header']]] + ['byte_5fcnt_0',['byte_cnt',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce',1,'uvgrtp::frame::rtcp_sender_info']]] ]; diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js index 31f73514..2a8885ba 100644 --- a/docs/html/search/all_8.js +++ b/docs/html/search/all_8.js @@ -1,4 +1,15 @@ var searchData= [ - ['media_5fstream_0',['media_stream',['../classuvgrtp_1_1media__stream.html',1,'uvgrtp']]] + ['cleanup_0',['Step 6: Cleanup',['../index.html#autotoc_md10',1,'']]], + ['configure_20media_5fstream_20optional_1',['Step 3.2: Configure media_stream (optional)',['../index.html#autotoc_md7',1,'']]], + ['configure_5fctx_2',['configure_ctx',['../classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238',1,'uvgrtp::media_stream']]], + ['context_3',['context',['../classuvgrtp_1_1context.html',1,'uvgrtp::context'],['../classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a',1,'uvgrtp::context::context()']]], + ['context_4',['Step 1: Create context',['../index.html#autotoc_md3',1,'']]], + ['count_5',['count',['../structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d',1,'uvgrtp::frame::rtcp_header']]], + ['create_20context_6',['Step 1: Create context',['../index.html#autotoc_md3',1,'']]], + ['create_20media_5fstream_7',['Step 3: Create media_stream',['../index.html#autotoc_md5',1,'']]], + ['create_20session_8',['Step 2: Create session',['../index.html#autotoc_md4',1,'']]], + ['create_5fsession_9',['create_session',['../classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266',1,'uvgrtp::context::create_session(std::pair< std::string, std::string > addresses)'],['../classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4',1,'uvgrtp::context::create_session(std::string address)']]], + ['create_5fstream_10',['create_stream',['../classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4',1,'uvgrtp::session::create_stream(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)'],['../classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416',1,'uvgrtp::session::create_stream(uint16_t port, rtp_format_t fmt, int rce_flags)']]], + ['crypto_5fenabled_11',['crypto_enabled',['../classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087',1,'uvgrtp::context']]] ]; diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js index bcd88346..76d9c00d 100644 --- a/docs/html/search/all_9.js +++ b/docs/html/search/all_9.js @@ -1,5 +1,6 @@ var searchData= [ - ['ntp_5flsw_0',['ntp_lsw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6',1,'uvgrtp::frame::rtcp_sender_info']]], - ['ntp_5fmsw_1',['ntp_msw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143',1,'uvgrtp::frame::rtcp_sender_info']]] + ['data_0',['Data',['../index.html#autotoc_md8',1,'Step 4: Sending data'],['../index.html#autotoc_md9',1,'Step 5: Receiving data']]], + ['destroy_5fsession_1',['destroy_session',['../classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9',1,'uvgrtp::context']]], + ['destroy_5fstream_2',['destroy_stream',['../classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149',1,'uvgrtp::session']]] ]; diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js index a9c442b3..3b5a833d 100644 --- a/docs/html/search/all_a.js +++ b/docs/html/search/all_a.js @@ -1,9 +1,5 @@ var searchData= [ - ['padding_0',['padding',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639',1,'uvgrtp::frame::rtcp_header']]], - ['payload_5flen_1',['payload_len',['../structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366',1,'uvgrtp::frame::rtp_frame::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01',1,'uvgrtp::frame::rtcp_app_packet::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981',1,'uvgrtp::frame::rtcp_fb_packet::payload_len()']]], - ['pkt_5fsubtype_2',['pkt_subtype',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab',1,'uvgrtp::frame::rtcp_header']]], - ['pkt_5ftype_3',['pkt_type',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855',1,'uvgrtp::frame::rtcp_header']]], - ['pull_5fframe_4',['pull_frame',['../classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb',1,'uvgrtp::media_stream::pull_frame()'],['../classuvgrtp_1_1media__stream.html#a466067ad9924a52530c62c53c1b397b4',1,'uvgrtp::media_stream::pull_frame(size_t timeout_ms)']]], - ['push_5fframe_5',['push_frame',['../classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409',1,'uvgrtp::media_stream::push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2',1,'uvgrtp::media_stream::push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438',1,'uvgrtp::media_stream::push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)']]] + ['encryption_20optional_0',['Step 3.1: Encryption (optional)',['../index.html#autotoc_md6',1,'']]], + ['example_20non_20working_1',['Simple sending example (non-working)',['../index.html#autotoc_md11',1,'']]] ]; diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js index 6e2ab2ef..f2a7c44e 100644 --- a/docs/html/search/all_b.js +++ b/docs/html/search/all_b.js @@ -1,109 +1,5 @@ var searchData= [ - ['rcc_5fclock_5frate_0',['RCC_CLOCK_RATE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99',1,'util.hh']]], - ['rcc_5fdyn_5fpayload_5ftype_1',['RCC_DYN_PAYLOAD_TYPE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617',1,'util.hh']]], - ['rcc_5ffps_5fdenominator_2',['RCC_FPS_DENOMINATOR',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9',1,'util.hh']]], - ['rcc_5ffps_5fnumerator_3',['RCC_FPS_NUMERATOR',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54',1,'util.hh']]], - ['rcc_5fmtu_5fsize_4',['RCC_MTU_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83',1,'util.hh']]], - ['rcc_5fpkt_5fmax_5fdelay_5',['RCC_PKT_MAX_DELAY',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135',1,'util.hh']]], - ['rcc_5fpoll_5ftimeout_6',['RCC_POLL_TIMEOUT',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8',1,'util.hh']]], - ['rcc_5fremote_5fssrc_7',['RCC_REMOTE_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7',1,'util.hh']]], - ['rcc_5fring_5fbuffer_5fsize_8',['RCC_RING_BUFFER_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6',1,'util.hh']]], - ['rcc_5fsession_5fbandwidth_9',['RCC_SESSION_BANDWIDTH',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7',1,'util.hh']]], - ['rcc_5fssrc_10',['RCC_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937',1,'util.hh']]], - ['rcc_5fudp_5frcv_5fbuf_5fsize_11',['RCC_UDP_RCV_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663',1,'util.hh']]], - ['rcc_5fudp_5fsnd_5fbuf_5fsize_12',['RCC_UDP_SND_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b',1,'util.hh']]], - ['rce_5ffragment_5fgeneric_13',['RCE_FRAGMENT_GENERIC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79',1,'util.hh']]], - ['rce_5fframe_5frate_14',['RCE_FRAME_RATE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc',1,'util.hh']]], - ['rce_5fh26x_5fdependency_5fenforcement_15',['RCE_H26X_DEPENDENCY_ENFORCEMENT',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2',1,'util.hh']]], - ['rce_5fholepunch_5fkeepalive_16',['RCE_HOLEPUNCH_KEEPALIVE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95',1,'util.hh']]], - ['rce_5fno_5fflags_17',['RCE_NO_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb',1,'util.hh']]], - ['rce_5fno_5fh26x_5fprepend_5fsc_18',['RCE_NO_H26X_PREPEND_SC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35',1,'util.hh']]], - ['rce_5fpace_5ffragment_5fsending_19',['RCE_PACE_FRAGMENT_SENDING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c',1,'util.hh']]], - ['rce_5freceive_5fonly_20',['RCE_RECEIVE_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73',1,'util.hh']]], - ['rce_5frtcp_21',['RCE_RTCP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d',1,'util.hh']]], - ['rce_5frtcp_5fmux_22',['RCE_RTCP_MUX',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7',1,'util.hh']]], - ['rce_5fsend_5fonly_23',['RCE_SEND_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374',1,'util.hh']]], - ['rce_5fsrtp_24',['RCE_SRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b',1,'util.hh']]], - ['rce_5fsrtp_5fauthenticate_5frtp_25',['RCE_SRTP_AUTHENTICATE_RTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e',1,'util.hh']]], - ['rce_5fsrtp_5fkeysize_5f192_26',['RCE_SRTP_KEYSIZE_192',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73',1,'util.hh']]], - ['rce_5fsrtp_5fkeysize_5f256_27',['RCE_SRTP_KEYSIZE_256',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0',1,'util.hh']]], - ['rce_5fsrtp_5fkmngmnt_5fuser_28',['RCE_SRTP_KMNGMNT_USER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773',1,'util.hh']]], - ['rce_5fsrtp_5fkmngmnt_5fzrtp_29',['RCE_SRTP_KMNGMNT_ZRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75',1,'util.hh']]], - ['rce_5fsrtp_5fnull_5fcipher_30',['RCE_SRTP_NULL_CIPHER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba',1,'util.hh']]], - ['rce_5fsrtp_5freplay_5fprotection_31',['RCE_SRTP_REPLAY_PROTECTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1',1,'util.hh']]], - ['rce_5fsystem_5fcall_5fclustering_32',['RCE_SYSTEM_CALL_CLUSTERING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263',1,'util.hh']]], - ['rce_5fzrtp_5fdiffie_5fhellman_5fmode_33',['RCE_ZRTP_DIFFIE_HELLMAN_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171',1,'util.hh']]], - ['rce_5fzrtp_5fmultistream_5fmode_34',['RCE_ZRTP_MULTISTREAM_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a',1,'util.hh']]], - ['remove_5fall_5fhooks_35',['remove_all_hooks',['../classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8',1,'uvgrtp::rtcp']]], - ['remove_5fsend_5fapp_5fhook_36',['remove_send_app_hook',['../classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2',1,'uvgrtp::rtcp']]], - ['rtcp_37',['rtcp',['../classuvgrtp_1_1rtcp.html',1,'uvgrtp']]], - ['rtcp_5fapp_5fpacket_38',['rtcp_app_packet',['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html',1,'uvgrtp::frame']]], - ['rtcp_5ffb_5ffci_39',['rtcp_fb_fci',['../structuvgrtp_1_1frame_1_1rtcp__fb__fci.html',1,'uvgrtp::frame']]], - ['rtcp_5ffb_5fpacket_40',['rtcp_fb_packet',['../structuvgrtp_1_1frame_1_1rtcp__fb__packet.html',1,'uvgrtp::frame']]], - ['rtcp_5ffir_41',['rtcp_fir',['../structuvgrtp_1_1frame_1_1rtcp__fir.html',1,'uvgrtp::frame']]], - ['rtcp_5fheader_42',['rtcp_header',['../structuvgrtp_1_1frame_1_1rtcp__header.html',1,'uvgrtp::frame']]], - ['rtcp_5freceiver_5freport_43',['rtcp_receiver_report',['../structuvgrtp_1_1frame_1_1rtcp__receiver__report.html',1,'uvgrtp::frame']]], - ['rtcp_5freport_5fblock_44',['rtcp_report_block',['../structuvgrtp_1_1frame_1_1rtcp__report__block.html',1,'uvgrtp::frame']]], - ['rtcp_5frpsi_45',['rtcp_rpsi',['../structuvgrtp_1_1frame_1_1rtcp__rpsi.html',1,'uvgrtp::frame']]], - ['rtcp_5fsdes_5fchunk_46',['rtcp_sdes_chunk',['../structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html',1,'uvgrtp::frame']]], - ['rtcp_5fsdes_5fitem_47',['rtcp_sdes_item',['../structuvgrtp_1_1frame_1_1rtcp__sdes__item.html',1,'uvgrtp::frame']]], - ['rtcp_5fsdes_5fpacket_48',['rtcp_sdes_packet',['../structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html',1,'uvgrtp::frame']]], - ['rtcp_5fsender_5finfo_49',['rtcp_sender_info',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html',1,'uvgrtp::frame']]], - ['rtcp_5fsender_5freport_50',['rtcp_sender_report',['../structuvgrtp_1_1frame_1_1rtcp__sender__report.html',1,'uvgrtp::frame']]], - ['rtcp_5fsli_51',['rtcp_sli',['../structuvgrtp_1_1frame_1_1rtcp__sli.html',1,'uvgrtp::frame']]], - ['rtp_5fauth_5ftag_5fmismatch_52',['RTP_AUTH_TAG_MISMATCH',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65',1,'util.hh']]], - ['rtp_5fbind_5ferror_53',['RTP_BIND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458',1,'util.hh']]], - ['rtp_5fcopy_54',['RTP_COPY',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a',1,'util.hh']]], - ['rtp_5fctx_5fconfiguration_5fflags_55',['RTP_CTX_CONFIGURATION_FLAGS',['../util_8hh.html#aa98d9238629e33567e73af0d239e587f',1,'util.hh']]], - ['rtp_5fctx_5fenable_5fflags_56',['RTP_CTX_ENABLE_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2af',1,'util.hh']]], - ['rtp_5ferror_57',['RTP_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b',1,'util.hh']]], - ['rtp_5fflags_58',['RTP_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2d',1,'util.hh']]], - ['rtp_5fformat_59',['RTP_FORMAT',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96',1,'util.hh']]], - ['rtp_5fformat_5fatlas_60',['RTP_FORMAT_ATLAS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee',1,'util.hh']]], - ['rtp_5fformat_5fdvi4_5f32_61',['RTP_FORMAT_DVI4_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abf1f20482ba40b0a4161f339978c65c8',1,'util.hh']]], - ['rtp_5fformat_5fdvi4_5f441_62',['RTP_FORMAT_DVI4_441',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295',1,'util.hh']]], - ['rtp_5fformat_5fdvi4_5f64_63',['RTP_FORMAT_DVI4_64',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae0cb5522bf562899f9001adeb669f3ef',1,'util.hh']]], - ['rtp_5fformat_5fdvi4_5f882_64',['RTP_FORMAT_DVI4_882',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abb0d59c256c7ed6b0f78aff67f89ac18',1,'util.hh']]], - ['rtp_5fformat_5fg722_65',['RTP_FORMAT_G722',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a2240ad1204186f7c34aacfb27673e692',1,'util.hh']]], - ['rtp_5fformat_5fg723_66',['RTP_FORMAT_G723',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa97d1880bfcfba08dfef863dc82426d1',1,'util.hh']]], - ['rtp_5fformat_5fg726_5f16_67',['RTP_FORMAT_G726_16',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae118651d66f3af54be3094e7e71336c7',1,'util.hh']]], - ['rtp_5fformat_5fg726_5f24_68',['RTP_FORMAT_G726_24',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a8635bcd6f336c19271e7ea20eb9111cf',1,'util.hh']]], - ['rtp_5fformat_5fg726_5f32_69',['RTP_FORMAT_G726_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a266862cd2289619b5c4de4c259a32785',1,'util.hh']]], - ['rtp_5fformat_5fg726_5f40_70',['RTP_FORMAT_G726_40',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af260843177efa05d95f98d30499db683',1,'util.hh']]], - ['rtp_5fformat_5fg728_71',['RTP_FORMAT_G728',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0f194f13a6b06211c1411caf0a454313',1,'util.hh']]], - ['rtp_5fformat_5fg729_72',['RTP_FORMAT_G729',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a78da373e5b8fb9a83e28f5b8b715ca19',1,'util.hh']]], - ['rtp_5fformat_5fg729d_73',['RTP_FORMAT_G729D',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af2981123dc924d80ed50371625927f58',1,'util.hh']]], - ['rtp_5fformat_5fg729e_74',['RTP_FORMAT_G729E',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96adba054e696e9d57d316c598618580a63',1,'util.hh']]], - ['rtp_5fformat_5fgeneric_75',['RTP_FORMAT_GENERIC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9',1,'util.hh']]], - ['rtp_5fformat_5fgsm_76',['RTP_FORMAT_GSM',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa6d4ba4fb63005fac69fa371fdf18a68',1,'util.hh']]], - ['rtp_5fformat_5fgsm_5fefr_77',['RTP_FORMAT_GSM_EFR',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e41697a659bea307ca6387330d5b9ed',1,'util.hh']]], - ['rtp_5fformat_5fh264_78',['RTP_FORMAT_H264',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd',1,'util.hh']]], - ['rtp_5fformat_5fh265_79',['RTP_FORMAT_H265',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b',1,'util.hh']]], - ['rtp_5fformat_5fh266_80',['RTP_FORMAT_H266',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d',1,'util.hh']]], - ['rtp_5fformat_5fl16_5fmono_81',['RTP_FORMAT_L16_MONO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4c34cf9ef36a41ba3565b0e3f6ea534a',1,'util.hh']]], - ['rtp_5fformat_5fl16_5fstereo_82',['RTP_FORMAT_L16_STEREO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a1de81aee545949cf4609fe3cca3ab1b8',1,'util.hh']]], - ['rtp_5fformat_5fl8_83',['RTP_FORMAT_L8',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abee7466b11e455f2f2362dc39e61c6a8',1,'util.hh']]], - ['rtp_5fformat_5flpc_84',['RTP_FORMAT_LPC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a61c2e69b79b0fd2a8fd0bb24fb359ecd',1,'util.hh']]], - ['rtp_5fformat_5fopus_85',['RTP_FORMAT_OPUS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b',1,'util.hh']]], - ['rtp_5fformat_5fpcma_86',['RTP_FORMAT_PCMA',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a518313e0a5342ff1b5b79ead46791b2e',1,'util.hh']]], - ['rtp_5fformat_5fpcmu_87',['RTP_FORMAT_PCMU',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a12448ad5b424a2f6d5028a7fd06019b7',1,'util.hh']]], - ['rtp_5fformat_5fvdvi_88',['RTP_FORMAT_VDVI',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a91525c8b53f821a6644803967be0e3ed',1,'util.hh']]], - ['rtp_5fframe_89',['rtp_frame',['../structuvgrtp_1_1frame_1_1rtp__frame.html',1,'uvgrtp::frame']]], - ['rtp_5fgeneric_5ferror_90',['RTP_GENERIC_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19',1,'util.hh']]], - ['rtp_5finitialized_91',['RTP_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a',1,'util.hh']]], - ['rtp_5finvalid_5fvalue_92',['RTP_INVALID_VALUE',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b',1,'util.hh']]], - ['rtp_5fmemory_5ferror_93',['RTP_MEMORY_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348',1,'util.hh']]], - ['rtp_5fno_5fflags_94',['RTP_NO_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6',1,'util.hh']]], - ['rtp_5fno_5fh26x_5fscl_95',['RTP_NO_H26X_SCL',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8',1,'util.hh']]], - ['rtp_5fnot_5ffound_96',['RTP_NOT_FOUND',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631',1,'util.hh']]], - ['rtp_5fnot_5finitialized_97',['RTP_NOT_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a',1,'util.hh']]], - ['rtp_5fnot_5fsupported_98',['RTP_NOT_SUPPORTED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22',1,'util.hh']]], - ['rtp_5fok_99',['RTP_OK',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1',1,'util.hh']]], - ['rtp_5frecv_5ferror_100',['RTP_RECV_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b',1,'util.hh']]], - ['rtp_5fsend_5ferror_101',['RTP_SEND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079',1,'util.hh']]], - ['rtp_5fsocket_5ferror_102',['RTP_SOCKET_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06',1,'util.hh']]], - ['rtp_5fssrc_5fcollision_103',['RTP_SSRC_COLLISION',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3',1,'util.hh']]], - ['rtp_5ftimeout_104',['RTP_TIMEOUT',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902',1,'util.hh']]], - ['rtp_5fts_105',['rtp_ts',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf',1,'uvgrtp::frame::rtcp_sender_info']]] + ['features_0',['Notable features',['../index.html#autotoc_md1',1,'']]], + ['fmt_1',['fmt',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de',1,'uvgrtp::frame::rtcp_header']]] ]; diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js index b8fc87fe..cddedd33 100644 --- a/docs/html/search/all_c.js +++ b/docs/html/search/all_c.js @@ -1,9 +1,6 @@ var searchData= [ - ['send_5fapp_5fpacket_0',['send_app_packet',['../classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34',1,'uvgrtp::rtcp']]], - ['send_5fbye_5fpacket_1',['send_bye_packet',['../classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4',1,'uvgrtp::rtcp']]], - ['send_5fsdes_5fpacket_2',['send_sdes_packet',['../classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84',1,'uvgrtp::rtcp']]], - ['session_3',['session',['../classuvgrtp_1_1session.html',1,'uvgrtp']]], - ['set_5fts_5finfo_4',['set_ts_info',['../classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316',1,'uvgrtp::rtcp']]], - ['start_5fzrtp_5',['start_zrtp',['../classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb',1,'uvgrtp::media_stream']]] + ['get_5fconfiguration_5fvalue_0',['get_configuration_value',['../classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d',1,'uvgrtp::media_stream']]], + ['get_5frtcp_1',['get_rtcp',['../classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea',1,'uvgrtp::media_stream']]], + ['get_5fssrc_2',['get_ssrc',['../classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5',1,'uvgrtp::media_stream']]] ]; diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js index 4d0e5064..1404b8eb 100644 --- a/docs/html/search/all_d.js +++ b/docs/html/search/all_d.js @@ -1,5 +1,9 @@ var searchData= [ - ['util_2ehh_0',['util.hh',['../util_8hh.html',1,'']]], - ['uvgrtp_1',['uvgRTP',['../index.html',1,'']]] + ['install_5fapp_5fhook_0',['install_app_hook',['../classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f',1,'uvgrtp::rtcp::install_app_hook(void(*hook)(uvgrtp::frame::rtcp_app_packet *))'],['../classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94',1,'uvgrtp::rtcp::install_app_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_app_packet >)> app_handler)']]], + ['install_5freceive_5fhook_1',['install_receive_hook',['../classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27',1,'uvgrtp::media_stream']]], + ['install_5freceiver_5fhook_2',['install_receiver_hook',['../classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602',1,'uvgrtp::rtcp::install_receiver_hook(void(*hook)(uvgrtp::frame::rtcp_receiver_report *))'],['../classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422',1,'uvgrtp::rtcp::install_receiver_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_receiver_report >)> rr_handler)']]], + ['install_5fsdes_5fhook_3',['install_sdes_hook',['../classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50',1,'uvgrtp::rtcp::install_sdes_hook(void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))'],['../classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40',1,'uvgrtp::rtcp::install_sdes_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sdes_packet >)> sdes_handler)']]], + ['install_5fsend_5fapp_5fhook_4',['install_send_app_hook',['../classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1',1,'uvgrtp::rtcp']]], + ['install_5fsender_5fhook_5',['install_sender_hook',['../classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1',1,'uvgrtp::rtcp::install_sender_hook(void(*hook)(uvgrtp::frame::rtcp_sender_report *))'],['../classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb',1,'uvgrtp::rtcp::install_sender_hook(std::function< void(std::unique_ptr< uvgrtp::frame::rtcp_sender_report >)> sr_handler)']]] ]; diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js index bd365c95..bb020cce 100644 --- a/docs/html/search/all_e.js +++ b/docs/html/search/all_e.js @@ -1,4 +1,4 @@ var searchData= [ - ['version_0',['version',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7',1,'uvgrtp::frame::rtcp_header']]] + ['length_0',['length',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0',1,'uvgrtp::frame::rtcp_header']]] ]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg index a933eea1..337d6cc1 100644 --- a/docs/html/search/close.svg +++ b/docs/html/search/close.svg @@ -1,27 +1,14 @@ + - - - - image/svg+xml - - - - - + - - - - image/svg+xml - - - - - + - - - - image/svg+xml - - - - - - + - - - - image/svg+xml - - - - - + > - + /> + /> diff --git a/docs/html/search/mag_seld.svg b/docs/html/search/mag_seld.svg index 6e720dcc..c906f84c 100644 --- a/docs/html/search/mag_seld.svg +++ b/docs/html/search/mag_seld.svg @@ -1,74 +1,31 @@ - + - - - - image/svg+xml - - - - - + > - + /> + /> diff --git a/docs/html/search/search.js b/docs/html/search/search.js index e103a262..666af01e 100644 --- a/docs/html/search/search.js +++ b/docs/html/search/search.js @@ -22,58 +22,9 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function convertToId(search) -{ - var result = ''; - for (i=0;i document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); // ------------ Event Handlers // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) - { + this.OnSearchFieldFocus = function(isActive) { this.Activate(isActive); } - this.OnSearchSelectShow = function() - { - var searchSelectWindow = this.DOMSearchSelectWindow(); - var searchField = this.DOMSearchSelect(); + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; // show search selection popup searchSelectWindow.style.display='block'; @@ -146,55 +102,44 @@ function SearchBox(name, resultsPath, extension) searchSelectWindow.style.top = top + 'px'; // stop selection hide timer - if (this.hideTimeout) - { + if (this.hideTimeout) { clearTimeout(this.hideTimeout); this.hideTimeout=0; } return false; // to avoid "image drag" default event } - this.OnSearchSelectHide = function() - { - this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), this.closeSelectionTimeout); } // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) - { - if (this.keyTimeout) // kill running timer - { + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer clearTimeout(this.keyTimeout); this.keyTimeout = 0; } - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) - { - if (e.shiftKey==1) - { + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { this.OnSearchSelectShow(); - var win=this.DOMSearchSelectWindow(); - for (i=0;i do a search - { + const searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) { // something was found -> do a search this.Search(); } } - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { + } else if (e.keyCode==38 && this.searchIndex>0) { // Up this.searchIndex--; this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); this.DOMSearchField().focus(); @@ -299,78 +239,75 @@ function SearchBox(name, resultsPath, extension) // --------- Actions // Closes the results window. - this.CloseResultsWindow = function() - { + this.CloseResultsWindow = function() { this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; this.Activate(false); } - this.CloseSelectionWindow = function() - { + this.CloseSelectionWindow = function() { this.DOMSearchSelectWindow().style.display = 'none'; } // Performs a search. - this.Search = function() - { + this.Search = function() { this.keyTimeout = 0; // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair idxChar = searchValue.substr(0, 2); } - var jsFile; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; } - var loadJS = function(url, impl, loc){ - var scriptTag = document.createElement('script'); + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); scriptTag.src = url; scriptTag.onload = impl; scriptTag.onreadystatechange = impl; loc.appendChild(scriptTag); } - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - var domSearchBox = this.DOMSearchBox(); - var domPopupSearchResults = this.DOMPopupSearchResults(); - var domSearchClose = this.DOMSearchClose(); - var resultsPath = this.resultsPath; + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; - var handleResults = function() { + const handleResults = function() { document.getElementById("Loading").style.display="none"; if (typeof searchData !== 'undefined') { createResults(resultsPath); document.getElementById("NoMatches").style.display="none"; } - - searchResults.Search(searchValue); - if (domPopupSearchResultsWindow.style.display!='block') - { + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { domSearchClose.style.display = 'inline-block'; - var left = getXPos(domSearchBox) + 150; - var top = getYPos(domSearchBox) + 20; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; domPopupSearchResultsWindow.style.display = 'block'; left -= domPopupSearchResults.offsetWidth; - var maxWidth = document.body.clientWidth; - var maxHeight = document.body.clientHeight; - var width = 300; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; if (left<10) left=10; if (width+left+8>maxWidth) width=maxWidth-left-8; - var height = 400; + let height = 400; if (height+top+8>maxHeight) height=maxHeight-top-8; domPopupSearchResultsWindow.style.top = top + 'px'; domPopupSearchResultsWindow.style.left = left + 'px'; @@ -392,17 +329,13 @@ function SearchBox(name, resultsPath, extension) // Activates or deactivates the search panel, resetting things to // their default values if necessary. - this.Activate = function(isActive) - { + this.Activate = function(isActive) { if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { this.DOMSearchBox().className = 'MSearchBoxActive'; this.searchActive = true; - } - else if (!isActive) // directly remove the panel - { + } else if (!isActive) { // directly remove the panel this.DOMSearchBox().className = 'MSearchBoxInactive'; this.searchActive = false; this.lastSearchValue = '' @@ -415,402 +348,347 @@ function SearchBox(name, resultsPath, extension) // ----------------------------------------------------------------------- // The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') - { - return element; - } +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; } - } - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; } - else - { - element.style.display = 'block'; + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; } } } + } - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; } + } - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; } - focusItem=null; - index++; } - return focusItem; + i++; } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; } - return focusItem; + focusItem=null; + index--; } + return focusItem; + } - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; } + return this.lastKey!=0; + } - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; } + n++; } } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - searchBox.CloseResultsWindow(); + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field document.getElementById("MSearchField").focus(); } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; } + return false; + } - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; } + return false; + } } -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} +function createResults(resultsPath) { -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } -function createResults(resultsPath) -{ - var results = document.getElementById("SRResults"); + const results = document.getElementById("SRResults"); results.innerHTML = ''; - for (var e=0; e { + const id = elem[0]; + const srResult = document.createElement('div'); srResult.setAttribute('id','SR_'+id); setClassAttr(srResult,'SRResult'); - var srEntry = document.createElement('div'); + const srEntry = document.createElement('div'); setClassAttr(srEntry,'SREntry'); - var srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+e); - setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = searchData[e][1][0]; + srLink.innerHTML = elem[1][0]; srEntry.appendChild(srLink); - if (searchData[e][1].length==2) // single result - { - srLink.setAttribute('href',resultsPath+searchData[e][1][1][0]); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); - if (searchData[e][1][1][1]) - { + if (elem[1][1][1]) { srLink.setAttribute('target','_parent'); - } - else - { + } else { srLink.setAttribute('target','_blank'); } - var srScope = document.createElement('span'); + const srScope = document.createElement('span'); setClassAttr(srScope,'SRScope'); - srScope.innerHTML = searchData[e][1][1][2]; + srScope.innerHTML = elem[1][1][2]; srEntry.appendChild(srScope); - } - else // multiple results - { + } else { // multiple results srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - var srChildren = document.createElement('div'); + const srChildren = document.createElement('div'); setClassAttr(srChildren,'SRChildren'); - for (var c=0; c - + uvgRTP: session.hh Source File + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + +
            14 class zrtp;
            15 class socketfactory;
            16
            +
            27 class session {
            28 public:
            30 session(std::string cname, std::string addr, std::shared_ptr<uvgrtp::socketfactory> sfp);
            @@ -129,11 +137,12 @@
            126 std::string cname_;
            127 std::shared_ptr<uvgrtp::socketfactory> sf_;
            128 };
            +
            129}
            130
            131namespace uvg_rtp = uvgrtp;
            -
            The media_stream is an entity which represents one RTP stream.
            Definition: media_stream.hh:53
            -
            Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.
            Definition: session.hh:27
            +
            The media_stream is an entity which represents one RTP stream.
            +
            Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.
            Definition session.hh:27
            uvgrtp::media_stream * create_stream(uint16_t port, rtp_format_t fmt, int rce_flags)
            Create a unidirectional media_stream for an RTP session.
            uvgrtp::media_stream * create_stream(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)
            Create a uni- or bidirectional media stream.
            rtp_error_t destroy_stream(uvgrtp::media_stream *stream)
            Destroy a media stream.
            @@ -141,7 +150,7 @@ diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet-members.html index 51c87d05..46589f43 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -88,7 +90,7 @@ diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet.html index d9c2fd6b..750a0df1 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__app__packet.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_app_packet Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,21 +84,21 @@

            See RFC 3550 section 6.7 - More...

            + More...

            #include <frame.hh>

            - + - + - + - + - +

            Public Attributes

            struct rtcp_header header
            struct rtcp_header header
             
            uint32_t ssrc = 0
            uint32_t ssrc = 0
             
            uint8_t name [4] = {0}
            uint8_t name [4] = {0}
             
            uint8_t * payload = nullptr
            uint8_t * payload = nullptr
             
            size_t payload_len = 0
            size_t payload_len = 0
             Size of the payload in bytes. Added by uvgRTP to help process the payload.
             
            @@ -193,7 +195,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__header-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__header-members.html index f36812f1..7588d724 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__header-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__header-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -90,7 +92,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__header.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__header.html index b88bc0f3..c7e46120 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__header.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__header.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_header Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,36 +84,37 @@

            Header of for all RTCP packets defined in RFC 3550 section 6 - More...

            + More...

            #include <frame.hh>

            - + - + - - - + + + + - - + + - - + + - + - + - +

            Public Attributes

            uint8_t version = 0
            uint8_t version = 0
             This field identifies the version of RTP. The version defined by RFC 3550 is two (2).

             
            uint8_t padding = 0
            uint8_t padding = 0
             Does this packet contain padding at the end.
             
            -union {
               uint8_t   count = 0
             Source count or report count. Alternative to pkt_subtype. More...
            +union { 
             
               uint8_t   count = 0 
             Source count or report count. Alternative to pkt_subtype. More...
             
               uint8_t   pkt_subtype
             Subtype in APP packets. Alternative to count. More...
               uint8_t   pkt_subtype 
             Subtype in APP packets. Alternative to count. More...
             
               uint8_t   fmt
             Feedback message type (FMT), specified in RFC 5104 section 4.3. Alternative to count and pkt_subtype. More...
               uint8_t   fmt 
             Feedback message type (FMT), specified in RFC 5104 section 4.3. Alternative to count and pkt_subtype. More...
             
            }; 
            };  
             
            uint8_t pkt_type = 0
            uint8_t pkt_type = 0
             Identifies the RTCP packet type.
             
            uint16_t length = 0
            uint16_t length = 0
             Length of the whole message measured in 32-bit words.
             
            @@ -253,7 +256,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report-members.html index 1689fdbd..00157376 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -86,7 +88,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report.html index e2a8ba95..ba162864 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__receiver__report.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_receiver_report Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,17 +84,17 @@

            See RFC 3550 section 6.4.2 - More...

            + More...

            #include <frame.hh>

            - + - + - +

            Public Attributes

            struct rtcp_header header
            struct rtcp_header header
             
            uint32_t ssrc = 0
            uint32_t ssrc = 0
             
            std::vector< rtcp_report_blockreport_blocks
            std::vector< rtcp_report_blockreport_blocks
             

            Detailed Description

            @@ -154,7 +156,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block-members.html index 4e3a6d85..cae00041 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -90,7 +92,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block.html index fd5d7ca8..7d0ab959 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__report__block.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_report_block Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,25 +84,25 @@

            See RFC 3550 section 6.4.1 - More...

            + More...

            #include <frame.hh>

            - + - + - + - + - + - + - +

            Public Attributes

            uint32_t ssrc = 0
            uint32_t ssrc = 0
             
            uint8_t fraction = 0
            uint8_t fraction = 0
             
            int32_t lost = 0
            int32_t lost = 0
             
            uint32_t last_seq = 0
            uint32_t last_seq = 0
             
            uint32_t jitter = 0
            uint32_t jitter = 0
             
            uint32_t lsr = 0
            uint32_t lsr = 0
             
            uint32_t dlsr = 0
            uint32_t dlsr = 0
             

            Detailed Description

            @@ -226,7 +228,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk-members.html index 329ec6ad..d6b739e4 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -85,7 +87,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html index bf6fbe13..de18bf52 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_sdes_chunk Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,15 +84,15 @@

            See RFC 3550 section 6.5 - More...

            + More...

            #include <frame.hh>

            - + - +

            Public Attributes

            uint32_t ssrc = 0
            uint32_t ssrc = 0
             
            std::vector< rtcp_sdes_itemitems
            std::vector< rtcp_sdes_itemitems
             

            Detailed Description

            @@ -136,7 +138,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item-members.html index 9ff4fff3..d6522a16 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -86,7 +88,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item.html index a89dd930..eb38756a 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__item.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_sdes_item Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,17 +84,17 @@

            See RFC 3550 section 6.5 - More...

            + More...

            #include <frame.hh>

            - + - + - +

            Public Attributes

            uint8_t type = 0
            uint8_t type = 0
             
            uint8_t length = 0
            uint8_t length = 0
             
            uint8_t * data = nullptr
            uint8_t * data = nullptr
             

            Detailed Description

            @@ -154,7 +156,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet-members.html index 33f13544..e6f944d9 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -85,7 +87,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html index 4252bd2e..d50a8526 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_sdes_packet Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,15 +84,15 @@

            See RFC 3550 section 6.5 - More...

            + More...

            #include <frame.hh>

            - + - +

            Public Attributes

            struct rtcp_header header
            struct rtcp_header header
             
            std::vector< rtcp_sdes_chunkchunks
            std::vector< rtcp_sdes_chunkchunks
             

            Detailed Description

            @@ -136,7 +138,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info-members.html index 0d5bdf08..ccad4495 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -88,7 +90,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info.html index a74cb6ae..fbfbb067 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__info.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_sender_info Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,24 +84,24 @@

            See RFC 3550 section 6.4.1 - More...

            + More...

            #include <frame.hh>

            - + - + - + - + - +

            Public Attributes

            uint32_t ntp_msw = 0
            uint32_t ntp_msw = 0
             NTP timestamp, most significant word.
             
            uint32_t ntp_lsw = 0
            uint32_t ntp_lsw = 0
             NTP timestamp, least significant word.
             
            uint32_t rtp_ts = 0
            uint32_t rtp_ts = 0
             RTP timestamp corresponding to this NTP timestamp.
             
            uint32_t pkt_cnt = 0
            uint32_t pkt_cnt = 0
             
            uint32_t byte_cnt = 0
            uint32_t byte_cnt = 0
             Also known as octet count.
             
            @@ -202,7 +204,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report-members.html index 929c7d02..00e2a820 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -87,7 +89,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report.html b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report.html index 37925ef0..a7cbb620 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtcp__sender__report.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtcp_sender_report Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,19 +84,19 @@

            See RFC 3550 section 6.4.1 - More...

            + More...

            #include <frame.hh>

            - + - + - + - +

            Public Attributes

            struct rtcp_header header
            struct rtcp_header header
             
            uint32_t ssrc = 0
            uint32_t ssrc = 0
             
            struct rtcp_sender_info sender_info
            struct rtcp_sender_info sender_info
             
            std::vector< rtcp_report_blockreport_blocks
            std::vector< rtcp_report_blockreport_blocks
             

            Detailed Description

            @@ -172,7 +174,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtp__frame-members.html b/docs/html/structuvgrtp_1_1frame_1_1rtp__frame-members.html index c0d36f01..47cb9a90 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtp__frame-members.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtp__frame-members.html @@ -3,12 +3,14 @@ - + uvgRTP: Member List + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -89,7 +91,7 @@

            diff --git a/docs/html/structuvgrtp_1_1frame_1_1rtp__frame.html b/docs/html/structuvgrtp_1_1frame_1_1rtp__frame.html index d527ee2e..0b93141d 100644 --- a/docs/html/structuvgrtp_1_1frame_1_1rtp__frame.html +++ b/docs/html/structuvgrtp_1_1frame_1_1rtp__frame.html @@ -3,12 +3,14 @@ - + uvgRTP: uvgrtp::frame::rtp_frame Struct Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -82,24 +84,24 @@

            See RFC 3550 section 5 - More...

            + More...

            #include <frame.hh>

            - + - + - + - + - + - +

            Public Attributes

            struct rtp_header header
            struct rtp_header header
             
            uint32_t * csrc = nullptr
            uint32_t * csrc = nullptr
             
            struct ext_header * ext = nullptr
            struct ext_header * ext = nullptr
             
            size_t padding_len = 0
            size_t padding_len = 0
             
            size_t payload_len = 0
            size_t payload_len = 0
             Length of the packet payload in bytes added by uvgRTP to help process the frame.
             
            uint8_t * payload = nullptr
            uint8_t * payload = nullptr
             

            Detailed Description

            @@ -212,7 +214,7 @@

            diff --git a/docs/html/tabs.css b/docs/html/tabs.css index 71c8a470..fe4854aa 100644 --- a/docs/html/tabs.css +++ b/docs/html/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/docs/html/util_8hh.html b/docs/html/util_8hh.html index d9569e34..1a38d65e 100644 --- a/docs/html/util_8hh.html +++ b/docs/html/util_8hh.html @@ -3,12 +3,14 @@ - + uvgRTP: util.hh File Reference + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + @@ -86,206 +88,208 @@ - + - + - +

            Typedefs

            -typedef enum RTP_ERROR rtp_error_t
            +typedef enum RTP_ERROR rtp_error_t
             
            -typedef enum RTP_FORMAT rtp_format_t
            +typedef enum RTP_FORMAT rtp_format_t
             
            -typedef enum RTP_FLAGS rtp_flags_t
            +typedef enum RTP_FLAGS rtp_flags_t
             
            - - + - - + - - + - - + - - +

            Enumerations

            enum  RTP_ERROR {
            -  RTP_OK = 0 +
            enum  RTP_ERROR {
            +  RTP_OK = 0 ,
            -  RTP_GENERIC_ERROR = -1 +  RTP_GENERIC_ERROR = -1 ,
            -  RTP_SOCKET_ERROR = -2 +  RTP_SOCKET_ERROR = -2 ,
            -  RTP_BIND_ERROR = -3 +  RTP_BIND_ERROR = -3 ,
            -  RTP_INVALID_VALUE = -4 +  RTP_INVALID_VALUE = -4 ,
            -  RTP_SEND_ERROR = -5 +  RTP_SEND_ERROR = -5 ,
            -  RTP_MEMORY_ERROR = -6 +  RTP_MEMORY_ERROR = -6 ,
            -  RTP_SSRC_COLLISION = -7 +  RTP_SSRC_COLLISION = -7 ,
            -  RTP_INITIALIZED = -8 +  RTP_INITIALIZED = -8 ,
            -  RTP_NOT_INITIALIZED = -9 +  RTP_NOT_INITIALIZED = -9 ,
            -  RTP_NOT_SUPPORTED = -10 +  RTP_NOT_SUPPORTED = -10 ,
            -  RTP_RECV_ERROR = -11 +  RTP_RECV_ERROR = -11 ,
            -  RTP_TIMEOUT = -12 +  RTP_TIMEOUT = -12 ,
            -  RTP_NOT_FOUND = -13 +  RTP_NOT_FOUND = -13 ,
            -  RTP_AUTH_TAG_MISMATCH = -14 +  RTP_AUTH_TAG_MISMATCH = -14
            }
             RTP error codes. More...
             RTP error codes. More...
             
            enum  RTP_FORMAT {
            -  RTP_FORMAT_GENERIC = 0 +
            enum  RTP_FORMAT {
            +  RTP_FORMAT_GENERIC = 0 ,
            -  RTP_FORMAT_PCMU = 0 +  RTP_FORMAT_PCMU = 0 ,
            -  RTP_FORMAT_GSM = 3 +  RTP_FORMAT_GSM = 3 ,
            -  RTP_FORMAT_G723 = 4 +  RTP_FORMAT_G723 = 4 ,
            -  RTP_FORMAT_DVI4_32 = 5 +  RTP_FORMAT_DVI4_32 = 5 ,
            -  RTP_FORMAT_DVI4_64 = 6 +  RTP_FORMAT_DVI4_64 = 6 ,
            -  RTP_FORMAT_LPC = 7 +  RTP_FORMAT_LPC = 7 ,
            -  RTP_FORMAT_PCMA = 8 +  RTP_FORMAT_PCMA = 8 ,
            -  RTP_FORMAT_G722 = 9 +  RTP_FORMAT_G722 = 9 ,
            -  RTP_FORMAT_L16_STEREO = 10 +  RTP_FORMAT_L16_STEREO = 10 ,
            -  RTP_FORMAT_L16_MONO = 11 +  RTP_FORMAT_L16_MONO = 11 ,
            -  RTP_FORMAT_G728 = 15 +  RTP_FORMAT_G728 = 15 ,
            -  RTP_FORMAT_DVI4_441 = 16 +  RTP_FORMAT_DVI4_441 = 16 ,
            -  RTP_FORMAT_DVI4_882 = 17 +  RTP_FORMAT_DVI4_882 = 17 ,
            -  RTP_FORMAT_G729 = 18 +  RTP_FORMAT_G729 = 18 ,
            -  RTP_FORMAT_G726_40 = 96 +  RTP_FORMAT_G726_40 = 96 ,
            -  RTP_FORMAT_G726_32 = 97 +  RTP_FORMAT_G726_32 = 97 ,
            -  RTP_FORMAT_G726_24 = 98 +  RTP_FORMAT_G726_24 = 98 ,
            -  RTP_FORMAT_G726_16 = 99 +  RTP_FORMAT_G726_16 = 99 ,
            -  RTP_FORMAT_G729D = 100 +  RTP_FORMAT_G729D = 100 ,
            -  RTP_FORMAT_G729E = 101 +  RTP_FORMAT_G729E = 101 ,
            -  RTP_FORMAT_GSM_EFR = 102 +  RTP_FORMAT_GSM_EFR = 102 ,
            -  RTP_FORMAT_L8 = 103 +  RTP_FORMAT_L8 = 103 ,
            -  RTP_FORMAT_VDVI = 104 +  RTP_FORMAT_VDVI = 104 ,
            -  RTP_FORMAT_OPUS = 105 +  RTP_FORMAT_OPUS = 105 ,
            -  RTP_FORMAT_H264 = 106 +  RTP_FORMAT_H264 = 106 ,
            -  RTP_FORMAT_H265 = 107 +  RTP_FORMAT_H265 = 107 ,
            -  RTP_FORMAT_H266 = 108 +  RTP_FORMAT_H266 = 108 ,
            -  RTP_FORMAT_ATLAS = 109 +  RTP_FORMAT_ATLAS = 109
            }
             These flags are given to uvgrtp::session::create_stream() More...
             These flags are given to uvgrtp::session::create_stream() More...
             
            enum  RTP_FLAGS {
            -  RTP_NO_FLAGS = 0 +
            enum  RTP_FLAGS {
            +  RTP_NO_FLAGS = 0 ,
            -  RTP_COPY = 1 << 1 +  RTP_COPY = 1 << 1 ,
            -  RTP_NO_H26X_SCL = 1 << 2 +  RTP_NO_H26X_SCL = 1 << 2 +,
            +  RTP_H26X_DO_NOT_AGGR = 1 << 3
            }
             These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together. More...
             These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together. More...
             
            enum  RTP_CTX_ENABLE_FLAGS {
            -  RCE_NO_FLAGS = 0 +
            enum  RTP_CTX_ENABLE_FLAGS {
            +  RCE_NO_FLAGS = 0 ,
            -  RCE_SEND_ONLY = 1 << 1 +  RCE_SEND_ONLY = 1 << 1 ,
            -  RCE_RECEIVE_ONLY = 1 << 2 +  RCE_RECEIVE_ONLY = 1 << 2 ,
            -  RCE_SRTP = 1 << 3 +  RCE_SRTP = 1 << 3 ,
            -  RCE_SRTP_KMNGMNT_ZRTP = 1 << 4 +  RCE_SRTP_KMNGMNT_ZRTP = 1 << 4 ,
            -  RCE_SRTP_KMNGMNT_USER = 1 << 5 +  RCE_SRTP_KMNGMNT_USER = 1 << 5 ,
            -  RCE_NO_H26X_PREPEND_SC = 1 << 6 +  RCE_NO_H26X_PREPEND_SC = 1 << 6 ,
            -  RCE_H26X_DEPENDENCY_ENFORCEMENT = 1 << 7 +  RCE_H26X_DEPENDENCY_ENFORCEMENT = 1 << 7 ,
            -  RCE_FRAGMENT_GENERIC = 1 << 8 +  RCE_FRAGMENT_GENERIC = 1 << 8 ,
            -  RCE_SYSTEM_CALL_CLUSTERING = 1 << 9 +  RCE_SYSTEM_CALL_CLUSTERING = 1 << 9 ,
            -  RCE_SRTP_NULL_CIPHER = 1 << 10 +  RCE_SRTP_NULL_CIPHER = 1 << 10 ,
            -  RCE_SRTP_AUTHENTICATE_RTP = 1 << 11 +  RCE_SRTP_AUTHENTICATE_RTP = 1 << 11 ,
            -  RCE_SRTP_REPLAY_PROTECTION = 1 << 12 +  RCE_SRTP_REPLAY_PROTECTION = 1 << 12 ,
            -  RCE_RTCP = 1 << 13 +  RCE_RTCP = 1 << 13 ,
            -  RCE_HOLEPUNCH_KEEPALIVE = 1 << 14 +  RCE_HOLEPUNCH_KEEPALIVE = 1 << 14 ,
            -  RCE_SRTP_KEYSIZE_192 = 1 << 15 +  RCE_SRTP_KEYSIZE_192 = 1 << 15 ,
            -  RCE_SRTP_KEYSIZE_256 = 1 << 16 +  RCE_SRTP_KEYSIZE_256 = 1 << 16 ,
            -  RCE_ZRTP_DIFFIE_HELLMAN_MODE = 1 << 17 +  RCE_ZRTP_DIFFIE_HELLMAN_MODE = 1 << 17 ,
            -  RCE_ZRTP_MULTISTREAM_MODE = 1 << 18 +  RCE_ZRTP_MULTISTREAM_MODE = 1 << 18 ,
            -  RCE_FRAME_RATE = 1 << 19 +  RCE_FRAME_RATE = 1 << 19 ,
            -  RCE_PACE_FRAGMENT_SENDING = 1 << 20 +  RCE_PACE_FRAGMENT_SENDING = 1 << 20 ,
            -  RCE_RTCP_MUX = 1 << 21 +  RCE_RTCP_MUX = 1 << 21
            }
             RTP context enable flags. More...
             RTP context enable flags. More...
             
            enum  RTP_CTX_CONFIGURATION_FLAGS {
            -  RCC_UDP_RCV_BUF_SIZE = 1 +
            enum  RTP_CTX_CONFIGURATION_FLAGS {
            +  RCC_UDP_RCV_BUF_SIZE = 1 ,
            -  RCC_UDP_SND_BUF_SIZE = 2 +  RCC_UDP_SND_BUF_SIZE = 2 ,
            -  RCC_RING_BUFFER_SIZE = 3 +  RCC_RING_BUFFER_SIZE = 3 ,
            -  RCC_PKT_MAX_DELAY = 4 +  RCC_PKT_MAX_DELAY = 4 ,
            -  RCC_DYN_PAYLOAD_TYPE = 5 +  RCC_DYN_PAYLOAD_TYPE = 5 ,
            -  RCC_CLOCK_RATE = 6 +  RCC_CLOCK_RATE = 6 ,
            -  RCC_MTU_SIZE = 7 +  RCC_MTU_SIZE = 7 ,
            -  RCC_FPS_NUMERATOR = 8 +  RCC_FPS_NUMERATOR = 8 ,
            -  RCC_FPS_DENOMINATOR = 9 +  RCC_FPS_DENOMINATOR = 9 ,
            -  RCC_SSRC = 10 +  RCC_SSRC = 10 ,
            -  RCC_REMOTE_SSRC = 11 +  RCC_REMOTE_SSRC = 11 ,
            -  RCC_SESSION_BANDWIDTH = 12 +  RCC_SESSION_BANDWIDTH = 12 ,
            -  RCC_POLL_TIMEOUT = 13 +  RCC_POLL_TIMEOUT = 13
            }
             RTP context configuration flags. More...
             RTP context configuration flags. More...
             
            -

            Variables

            +
            thread_local rtp_error_t rtp_errno
             
            @@ -297,7 +301,7 @@

            - +
            enum RTP_CTX_CONFIGURATION_FLAGSenum RTP_CTX_CONFIGURATION_FLAGS

            @@ -355,7 +359,7 @@

            Definition at line 281 of file util.hh.

            +

            Definition at line 284 of file util.hh.

            @@ -366,7 +370,7 @@

            - +
            enum RTP_CTX_ENABLE_FLAGSenum RTP_CTX_ENABLE_FLAGS
            @@ -428,7 +432,7 @@

            Definition at line 165 of file util.hh.

            +

            Definition at line 168 of file util.hh.

            @@ -439,7 +443,7 @@

            - +
            enum RTP_ERRORenum RTP_ERROR
            @@ -503,6 +507,8 @@

            RTP_NO_H26X_SCL 

            By default, uvgRTP searches for start code prefixes (0x000001 or 0x00000001) from the frame to divide NAL units and remove the prefix. If you instead want to provide the NAL units without the start code prefix yourself, you may use this flag to disable Start Code Lookup (SCL) and the frames will be treated as send-ready NAL units.

            +RTP_H26X_DO_NOT_AGGR 

            Disable the use of Aggregation Packets in H26x formats

            +

            Definition at line 137 of file util.hh.

            @@ -516,7 +522,7 @@

            - +
            enum RTP_FORMATenum RTP_FORMAT

            @@ -590,7 +596,7 @@

            diff --git a/docs/html/util_8hh_source.html b/docs/html/util_8hh_source.html index f9af680f..a7c8875c 100644 --- a/docs/html/util_8hh_source.html +++ b/docs/html/util_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: util.hh Source File + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + +
            19#include <stdint.h>
            20
            22
            +
            30typedef enum RTP_ERROR {
            32 RTP_MULTIPLE_PKTS_READY = 6,
            33 RTP_PKT_READY = 5,
            @@ -121,7 +129,9 @@
            55} rtp_error_t;
            +
            56
            +
            62typedef enum RTP_FORMAT {
            63 // See RFC 3551 for more details
            64
            @@ -190,196 +200,206 @@
            127 RTP_FORMAT_ATLAS = 109
            128
            129} rtp_format_t;
            +
            130
            +
            137typedef enum RTP_FLAGS {
            139
            141
            142 RTP_OBSOLETE = 1,
            143 RTP_SLICE = 1, // used to do what RTP_NO_H26X_SCL does, may do something different in the future
            -
            145
            +
            145
            147 RTP_COPY = 1 << 1,
            148
            -
            154 RTP_NO_H26X_SCL = 1 << 2
            +
            155
            -
            156} rtp_flags_t;
            -
            157
            - - -
            167
            -
            169 RCE_OBSOLETE = 1,
            -
            171
            -
            172 // These can be used to specify what the address does for one address create session
            -
            173 RCE_SEND_ONLY = 1 << 1,
            - -
            175
            -
            177 RCE_SRTP = 1 << 3,
            +
            157 RTP_H26X_DO_NOT_AGGR = 1 << 3
            +
            158
            +
            159} rtp_flags_t;
            +
            +
            160
            +
            + + +
            170
            +
            172 RCE_OBSOLETE = 1,
            +
            174
            +
            175 // These can be used to specify what the address does for one address create session
            +
            176 RCE_SEND_ONLY = 1 << 1,
            +
            178
            - -
            188
            - -
            198
            -
            199
            - -
            204
            - -
            208
            - -
            216
            - -
            222
            - +
            180 RCE_SRTP = 1 << 3,
            +
            181
            + +
            191
            + +
            201
            +
            202
            + +
            207
            + +
            211
            + +
            219
            +
            225
            - -
            233
            - + +
            228
            +
            236
            -
            239 RCE_RTCP = 1 << 13,
            -
            240
            - -
            246
            - + +
            239
            +
            242 RCE_RTCP = 1 << 13,
            +
            243
            +
            249
            - +
            252
            - +
            255
            - +
            258
            -
            260 RCE_FRAME_RATE = 1 << 19,
            +
            261
            - +
            263 RCE_FRAME_RATE = 1 << 19,
            264
            -
            266 RCE_RTCP_MUX = 1 << 21,
            -
            267
            -
            269 RCE_LAST = 1 << 22
            -
            271}; // maximum is 1 << 30 for int
            -
            272
            -
            273
            - -
            283 RCC_NO_FLAGS = 0, // This flag has no purpose
            -
            285
            - -
            293
            - -
            301
            - -
            309
            - -
            317
            - + +
            267
            +
            269 RCE_RTCP_MUX = 1 << 21,
            +
            270
            +
            272 RCE_LAST = 1 << 22
            +
            274}; // maximum is 1 << 30 for int
            +
            +
            275
            +
            276
            +
            + +
            286 RCC_NO_FLAGS = 0, // This flag has no purpose
            +
            288
            + +
            296
            + +
            304
            + +
            312
            +
            320
            - +
            323
            - -
            333
            - -
            346
            - -
            354
            - -
            360
            - -
            366
            - -
            380
            - -
            388
            -
            390 RCC_LAST
            -
            392};
            -
            393
            -
            394extern thread_local rtp_error_t rtp_errno;
            -
            RTP_CTX_ENABLE_FLAGS
            RTP context enable flags.
            Definition: util.hh:165
            -
            @ RCE_H26X_DEPENDENCY_ENFORCEMENT
            Definition: util.hh:207
            -
            @ RCE_SRTP_KEYSIZE_256
            Definition: util.hh:251
            -
            @ RCE_RTCP_MUX
            Definition: util.hh:266
            -
            @ RCE_SRTP_KMNGMNT_ZRTP
            Definition: util.hh:187
            -
            @ RCE_SRTP_KMNGMNT_USER
            Definition: util.hh:197
            -
            @ RCE_NO_FLAGS
            Use this if you have no RCE flags.
            Definition: util.hh:166
            -
            @ RCE_SRTP_NULL_CIPHER
            Definition: util.hh:224
            -
            @ RCE_ZRTP_DIFFIE_HELLMAN_MODE
            Definition: util.hh:254
            -
            @ RCE_FRAGMENT_GENERIC
            Definition: util.hh:215
            -
            @ RCE_SEND_ONLY
            address/port interpreted as remote, no binding to local socket
            Definition: util.hh:173
            -
            @ RCE_SRTP_AUTHENTICATE_RTP
            Definition: util.hh:232
            -
            @ RCE_PACE_FRAGMENT_SENDING
            Definition: util.hh:263
            -
            @ RCE_NO_H26X_PREPEND_SC
            Definition: util.hh:203
            -
            @ RCE_HOLEPUNCH_KEEPALIVE
            Definition: util.hh:245
            -
            @ RCE_ZRTP_MULTISTREAM_MODE
            Definition: util.hh:257
            -
            @ RCE_SYSTEM_CALL_CLUSTERING
            Definition: util.hh:221
            -
            @ RCE_RTCP
            Definition: util.hh:239
            -
            @ RCE_SRTP_REPLAY_PROTECTION
            Definition: util.hh:235
            -
            @ RCE_FRAME_RATE
            Definition: util.hh:260
            -
            @ RCE_SRTP_KEYSIZE_192
            Definition: util.hh:248
            -
            @ RCE_SRTP
            Definition: util.hh:177
            -
            @ RCE_RECEIVE_ONLY
            address/port interpreted as local, sending not possible
            Definition: util.hh:174
            -
            RTP_FORMAT
            These flags are given to uvgrtp::session::create_stream()
            Definition: util.hh:62
            -
            @ RTP_FORMAT_H266
            H.266/VVC.
            Definition: util.hh:126
            -
            @ RTP_FORMAT_G728
            G728.
            Definition: util.hh:82
            -
            @ RTP_FORMAT_PCMU
            PCMU, ITU-T G.711.
            Definition: util.hh:67
            -
            @ RTP_FORMAT_L16_STEREO
            L16 Stereo.
            Definition: util.hh:77
            -
            @ RTP_FORMAT_G722
            G722.
            Definition: util.hh:76
            -
            @ RTP_FORMAT_G726_32
            G726, 32 kbit/s.
            Definition: util.hh:113
            -
            @ RTP_FORMAT_L16_MONO
            L16 Mono.
            Definition: util.hh:78
            -
            @ RTP_FORMAT_GSM_EFR
            GSM enhanced full rate speech transcoding.
            Definition: util.hh:118
            -
            @ RTP_FORMAT_OPUS
            Opus, see RFC 7587.
            Definition: util.hh:122
            -
            @ RTP_FORMAT_H265
            H.265/HEVC, see RFC 7798.
            Definition: util.hh:125
            -
            @ RTP_FORMAT_PCMA
            PCMA.
            Definition: util.hh:75
            -
            @ RTP_FORMAT_LPC
            LPC.
            Definition: util.hh:74
            -
            @ RTP_FORMAT_G729
            G729, 8 kbit/s.
            Definition: util.hh:85
            -
            @ RTP_FORMAT_ATLAS
            V3C.
            Definition: util.hh:127
            -
            @ RTP_FORMAT_G726_24
            G726, 24 kbit/s.
            Definition: util.hh:114
            -
            @ RTP_FORMAT_VDVI
            VDVI, variable-rate DVI4.
            Definition: util.hh:121
            -
            @ RTP_FORMAT_DVI4_441
            DVI 44.1 kbit/s.
            Definition: util.hh:83
            -
            @ RTP_FORMAT_GSM
            GSM (Group Speciale Mobile)
            Definition: util.hh:70
            -
            @ RTP_FORMAT_G723
            G723.
            Definition: util.hh:71
            -
            @ RTP_FORMAT_DVI4_882
            DVI 88.2 kbit/s.
            Definition: util.hh:84
            -
            @ RTP_FORMAT_L8
            L8, linear audio data samples.
            Definition: util.hh:119
            -
            @ RTP_FORMAT_DVI4_32
            DVI 32 kbit/s.
            Definition: util.hh:72
            -
            @ RTP_FORMAT_GENERIC
            Same as PCMU.
            Definition: util.hh:66
            -
            @ RTP_FORMAT_H264
            H.264/AVC, see RFC 6184.
            Definition: util.hh:124
            -
            @ RTP_FORMAT_G729E
            G729E, 11.8 kbit/s.
            Definition: util.hh:117
            -
            @ RTP_FORMAT_DVI4_64
            DVI 64 kbit/s.
            Definition: util.hh:73
            -
            @ RTP_FORMAT_G726_16
            G726, 16 kbit/s.
            Definition: util.hh:115
            -
            @ RTP_FORMAT_G726_40
            G726, 40 kbit/s.
            Definition: util.hh:112
            -
            @ RTP_FORMAT_G729D
            G729D, 6.4 kbit/s.
            Definition: util.hh:116
            -
            RTP_ERROR
            RTP error codes.
            Definition: util.hh:30
            -
            @ RTP_BIND_ERROR
            Failed to bind to interface.
            Definition: util.hh:43
            -
            @ RTP_INITIALIZED
            Object already initialized.
            Definition: util.hh:48
            -
            @ RTP_NOT_FOUND
            Object not found.
            Definition: util.hh:53
            -
            @ RTP_OK
            Success.
            Definition: util.hh:40
            -
            @ RTP_NOT_INITIALIZED
            Object has not been initialized.
            Definition: util.hh:49
            -
            @ RTP_INVALID_VALUE
            Invalid value.
            Definition: util.hh:44
            -
            @ RTP_SEND_ERROR
            System call send(2) or one of its derivatives failed.
            Definition: util.hh:45
            -
            @ RTP_AUTH_TAG_MISMATCH
            Authentication tag does not match the RTP packet contents.
            Definition: util.hh:54
            -
            @ RTP_NOT_SUPPORTED
            Method/version/extension not supported.
            Definition: util.hh:50
            -
            @ RTP_SSRC_COLLISION
            SSRC collision detected.
            Definition: util.hh:47
            -
            @ RTP_RECV_ERROR
            System call recv(2) or one of its derivatives failed.
            Definition: util.hh:51
            -
            @ RTP_SOCKET_ERROR
            Failed to create socket.
            Definition: util.hh:42
            -
            @ RTP_MEMORY_ERROR
            Memory allocation failed.
            Definition: util.hh:46
            -
            @ RTP_TIMEOUT
            Operation timed out.
            Definition: util.hh:52
            -
            @ RTP_GENERIC_ERROR
            Generic error condition.
            Definition: util.hh:41
            -
            RTP_CTX_CONFIGURATION_FLAGS
            RTP context configuration flags.
            Definition: util.hh:281
            -
            @ RCC_REMOTE_SSRC
            Definition: util.hh:365
            -
            @ RCC_FPS_NUMERATOR
            Definition: util.hh:345
            -
            @ RCC_PKT_MAX_DELAY
            Definition: util.hh:316
            -
            @ RCC_MTU_SIZE
            Definition: util.hh:332
            -
            @ RCC_POLL_TIMEOUT
            Definition: util.hh:387
            -
            @ RCC_SESSION_BANDWIDTH
            Definition: util.hh:379
            -
            @ RCC_RING_BUFFER_SIZE
            Definition: util.hh:308
            -
            @ RCC_FPS_DENOMINATOR
            Definition: util.hh:353
            -
            @ RCC_UDP_RCV_BUF_SIZE
            Definition: util.hh:292
            -
            @ RCC_DYN_PAYLOAD_TYPE
            Definition: util.hh:319
            -
            @ RCC_UDP_SND_BUF_SIZE
            Definition: util.hh:300
            -
            @ RCC_SSRC
            Definition: util.hh:359
            -
            @ RCC_CLOCK_RATE
            Definition: util.hh:322
            -
            RTP_FLAGS
            These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.
            Definition: util.hh:137
            -
            @ RTP_NO_FLAGS
            Use this if you have no RTP flags.
            Definition: util.hh:138
            -
            @ RTP_COPY
            Definition: util.hh:147
            -
            @ RTP_NO_H26X_SCL
            Definition: util.hh:154
            + +
            326
            + +
            336
            + +
            349
            + +
            357
            + +
            363
            + +
            369
            + +
            383
            + +
            391
            +
            393 RCC_LAST
            +
            395};
            +
            +
            396
            +
            397extern thread_local rtp_error_t rtp_errno;
            +
            RTP_CTX_ENABLE_FLAGS
            RTP context enable flags.
            Definition util.hh:168
            +
            @ RCE_H26X_DEPENDENCY_ENFORCEMENT
            Definition util.hh:210
            +
            @ RCE_SRTP_KEYSIZE_256
            Definition util.hh:254
            +
            @ RCE_RTCP_MUX
            Definition util.hh:269
            +
            @ RCE_SRTP_KMNGMNT_ZRTP
            Definition util.hh:190
            +
            @ RCE_SRTP_KMNGMNT_USER
            Definition util.hh:200
            +
            @ RCE_NO_FLAGS
            Use this if you have no RCE flags.
            Definition util.hh:169
            +
            @ RCE_SRTP_NULL_CIPHER
            Definition util.hh:227
            +
            @ RCE_ZRTP_DIFFIE_HELLMAN_MODE
            Definition util.hh:257
            +
            @ RCE_FRAGMENT_GENERIC
            Definition util.hh:218
            +
            @ RCE_SEND_ONLY
            address/port interpreted as remote, no binding to local socket
            Definition util.hh:176
            +
            @ RCE_SRTP_AUTHENTICATE_RTP
            Definition util.hh:235
            +
            @ RCE_PACE_FRAGMENT_SENDING
            Definition util.hh:266
            +
            @ RCE_NO_H26X_PREPEND_SC
            Definition util.hh:206
            +
            @ RCE_HOLEPUNCH_KEEPALIVE
            Definition util.hh:248
            +
            @ RCE_ZRTP_MULTISTREAM_MODE
            Definition util.hh:260
            +
            @ RCE_SYSTEM_CALL_CLUSTERING
            Definition util.hh:224
            +
            @ RCE_RTCP
            Definition util.hh:242
            +
            @ RCE_SRTP_REPLAY_PROTECTION
            Definition util.hh:238
            +
            @ RCE_FRAME_RATE
            Definition util.hh:263
            +
            @ RCE_SRTP_KEYSIZE_192
            Definition util.hh:251
            +
            @ RCE_SRTP
            Definition util.hh:180
            +
            @ RCE_RECEIVE_ONLY
            address/port interpreted as local, sending not possible
            Definition util.hh:177
            +
            RTP_FORMAT
            These flags are given to uvgrtp::session::create_stream()
            Definition util.hh:62
            +
            @ RTP_FORMAT_H266
            H.266/VVC.
            Definition util.hh:126
            +
            @ RTP_FORMAT_G728
            G728.
            Definition util.hh:82
            +
            @ RTP_FORMAT_PCMU
            PCMU, ITU-T G.711.
            Definition util.hh:67
            +
            @ RTP_FORMAT_L16_STEREO
            L16 Stereo.
            Definition util.hh:77
            +
            @ RTP_FORMAT_G722
            G722.
            Definition util.hh:76
            +
            @ RTP_FORMAT_G726_32
            G726, 32 kbit/s.
            Definition util.hh:113
            +
            @ RTP_FORMAT_L16_MONO
            L16 Mono.
            Definition util.hh:78
            +
            @ RTP_FORMAT_GSM_EFR
            GSM enhanced full rate speech transcoding.
            Definition util.hh:118
            +
            @ RTP_FORMAT_OPUS
            Opus, see RFC 7587.
            Definition util.hh:122
            +
            @ RTP_FORMAT_H265
            H.265/HEVC, see RFC 7798.
            Definition util.hh:125
            +
            @ RTP_FORMAT_PCMA
            PCMA.
            Definition util.hh:75
            +
            @ RTP_FORMAT_LPC
            LPC.
            Definition util.hh:74
            +
            @ RTP_FORMAT_G729
            G729, 8 kbit/s.
            Definition util.hh:85
            +
            @ RTP_FORMAT_ATLAS
            V3C.
            Definition util.hh:127
            +
            @ RTP_FORMAT_G726_24
            G726, 24 kbit/s.
            Definition util.hh:114
            +
            @ RTP_FORMAT_VDVI
            VDVI, variable-rate DVI4.
            Definition util.hh:121
            +
            @ RTP_FORMAT_DVI4_441
            DVI 44.1 kbit/s.
            Definition util.hh:83
            +
            @ RTP_FORMAT_GSM
            GSM (Group Speciale Mobile)
            Definition util.hh:70
            +
            @ RTP_FORMAT_G723
            G723.
            Definition util.hh:71
            +
            @ RTP_FORMAT_DVI4_882
            DVI 88.2 kbit/s.
            Definition util.hh:84
            +
            @ RTP_FORMAT_L8
            L8, linear audio data samples.
            Definition util.hh:119
            +
            @ RTP_FORMAT_DVI4_32
            DVI 32 kbit/s.
            Definition util.hh:72
            +
            @ RTP_FORMAT_GENERIC
            Same as PCMU.
            Definition util.hh:66
            +
            @ RTP_FORMAT_H264
            H.264/AVC, see RFC 6184.
            Definition util.hh:124
            +
            @ RTP_FORMAT_G729E
            G729E, 11.8 kbit/s.
            Definition util.hh:117
            +
            @ RTP_FORMAT_DVI4_64
            DVI 64 kbit/s.
            Definition util.hh:73
            +
            @ RTP_FORMAT_G726_16
            G726, 16 kbit/s.
            Definition util.hh:115
            +
            @ RTP_FORMAT_G726_40
            G726, 40 kbit/s.
            Definition util.hh:112
            +
            @ RTP_FORMAT_G729D
            G729D, 6.4 kbit/s.
            Definition util.hh:116
            +
            RTP_ERROR
            RTP error codes.
            Definition util.hh:30
            +
            @ RTP_BIND_ERROR
            Failed to bind to interface.
            Definition util.hh:43
            +
            @ RTP_INITIALIZED
            Object already initialized.
            Definition util.hh:48
            +
            @ RTP_NOT_FOUND
            Object not found.
            Definition util.hh:53
            +
            @ RTP_OK
            Success.
            Definition util.hh:40
            +
            @ RTP_NOT_INITIALIZED
            Object has not been initialized.
            Definition util.hh:49
            +
            @ RTP_INVALID_VALUE
            Invalid value.
            Definition util.hh:44
            +
            @ RTP_SEND_ERROR
            System call send(2) or one of its derivatives failed.
            Definition util.hh:45
            +
            @ RTP_AUTH_TAG_MISMATCH
            Authentication tag does not match the RTP packet contents.
            Definition util.hh:54
            +
            @ RTP_NOT_SUPPORTED
            Method/version/extension not supported.
            Definition util.hh:50
            +
            @ RTP_SSRC_COLLISION
            SSRC collision detected.
            Definition util.hh:47
            +
            @ RTP_RECV_ERROR
            System call recv(2) or one of its derivatives failed.
            Definition util.hh:51
            +
            @ RTP_SOCKET_ERROR
            Failed to create socket.
            Definition util.hh:42
            +
            @ RTP_MEMORY_ERROR
            Memory allocation failed.
            Definition util.hh:46
            +
            @ RTP_TIMEOUT
            Operation timed out.
            Definition util.hh:52
            +
            @ RTP_GENERIC_ERROR
            Generic error condition.
            Definition util.hh:41
            +
            RTP_CTX_CONFIGURATION_FLAGS
            RTP context configuration flags.
            Definition util.hh:284
            +
            @ RCC_REMOTE_SSRC
            Definition util.hh:368
            +
            @ RCC_FPS_NUMERATOR
            Definition util.hh:348
            +
            @ RCC_PKT_MAX_DELAY
            Definition util.hh:319
            +
            @ RCC_MTU_SIZE
            Definition util.hh:335
            +
            @ RCC_POLL_TIMEOUT
            Definition util.hh:390
            +
            @ RCC_SESSION_BANDWIDTH
            Definition util.hh:382
            +
            @ RCC_RING_BUFFER_SIZE
            Definition util.hh:311
            +
            @ RCC_FPS_DENOMINATOR
            Definition util.hh:356
            +
            @ RCC_UDP_RCV_BUF_SIZE
            Definition util.hh:295
            +
            @ RCC_DYN_PAYLOAD_TYPE
            Definition util.hh:322
            +
            @ RCC_UDP_SND_BUF_SIZE
            Definition util.hh:303
            +
            @ RCC_SSRC
            Definition util.hh:362
            +
            @ RCC_CLOCK_RATE
            Definition util.hh:325
            +
            RTP_FLAGS
            These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.
            Definition util.hh:137
            +
            @ RTP_H26X_DO_NOT_AGGR
            Definition util.hh:157
            +
            @ RTP_NO_FLAGS
            Use this if you have no RTP flags.
            Definition util.hh:138
            +
            @ RTP_COPY
            Definition util.hh:147
            +
            @ RTP_NO_H26X_SCL
            Definition util.hh:154

            diff --git a/docs/html/version_8hh_source.html b/docs/html/version_8hh_source.html index 238c37c8..f85a0cba 100644 --- a/docs/html/version_8hh_source.html +++ b/docs/html/version_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: version.hh Source File + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + +
            diff --git a/docs/html/wrapper__c_8hh_source.html b/docs/html/wrapper__c_8hh_source.html index 6fa7e1aa..34b61300 100644 --- a/docs/html/wrapper__c_8hh_source.html +++ b/docs/html/wrapper__c_8hh_source.html @@ -3,12 +3,14 @@ - + uvgRTP: wrapper_c.hh Source File + + @@ -21,7 +23,7 @@ -
            uvgRTP 3.0.0 +
            uvgRTP 3.1.0
            An open-source library for RTP/SRTP media delivery
            @@ -30,7 +32,7 @@
            - + +