Hello Max, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/3070

to look at the new patch set (#2).

osmo_ortp: Add osmo_rtp_drop_frame API

This API will be used by osmo-bts to maintain the sampling clock of the
RTP socket whenever a frame should be sent but it is not available, for
instance due to low quality of signal.

Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
---
M include/osmocom/trau/osmo_ortp.h
M src/trau/osmo_ortp.c
2 files changed, 22 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/70/3070/2

diff --git a/include/osmocom/trau/osmo_ortp.h b/include/osmocom/trau/osmo_ortp.h
index 9eb176f..fa6696c 100644
--- a/include/osmocom/trau/osmo_ortp.h
+++ b/include/osmocom/trau/osmo_ortp.h
@@ -76,6 +76,7 @@
 int osmo_rtp_socket_connect(struct osmo_rtp_socket *rs, const char *ip, 
uint16_t port);
 int osmo_rtp_socket_set_pt(struct osmo_rtp_socket *rs, int payload_type);
 int osmo_rtp_socket_free(struct osmo_rtp_socket *rs);
+int osmo_rtp_drop_frame(struct osmo_rtp_socket *rs, unsigned int duration);
 int osmo_rtp_send_frame(struct osmo_rtp_socket *rs, const uint8_t *payload,
                        unsigned int payload_len, unsigned int duration);
 int osmo_rtp_send_frame_ext(struct osmo_rtp_socket *rs, const uint8_t *payload,
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index b2ee040..05817aa 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -436,6 +436,27 @@
                return osmo_rtp_socket_fdreg(rs);
 }
 
+/*! \brief Increment seq and timestamp on a RTP socket without sending any 
packet
+ *  \param[in] rs OsmoRTP socket
+ *  \param[in] duration duration in number of RTP clock ticks
+ *
+ * Useful if willing to update the RTP internal clock at a given time but no
+ * audio content is available. From receiver point of view, it will look like
+ * a packet was lost somewhere in the path.
+ *
+ *  \returns 0 on success, <0 in case of error.
+ */
+int osmo_rtp_drop_frame(struct osmo_rtp_socket *rs, unsigned int duration)
+{
+       if (rs->flags & OSMO_RTP_F_DISABLED)
+               return 0;
+
+       uint16_t next_seq = rtp_session_get_seq_number(rs->sess) + 1;
+       rtp_session_set_seq_number(rs->sess, next_seq);
+       rs->tx_timestamp += duration;
+       return 0;
+}
+
 /*! \brief Send one RTP frame via a RTP socket
  *  \param[in] rs OsmoRTP socket
  *  \param[in] payload pointer to buffer with RTP payload data

-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 2
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max <[email protected]>
Gerrit-Reviewer: Pau Espin Pedrol <[email protected]>

Reply via email to