\doxysection{src/jibuf.c File Reference} \label{jibuf_8c}\index{src/jibuf.c@{src/jibuf.c}} Osmocom Jitter Buffer helpers. {\ttfamily \#include $<$stdio.\+h$>$}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include $<$inttypes.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/msgb.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/talloc.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/logging.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/utils.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/amr.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/rtp.\+h$>$}\newline {\ttfamily \#include $<$osmocom/netif/jibuf.\+h$>$}\newline {\ttfamily \#include $<$arpa/inet.\+h$>$}\newline \doxysubsection*{Macros} \begin{DoxyCompactItemize} \item \mbox{\label{jibuf_8c_ab5ac139064984962fc39032f24689759}} \#define {\bfseries SAMPLES\+\_\+\+PER\+\_\+\+PKT}~160 \item \mbox{\label{jibuf_8c_a4b76a0c2859cfd819a343a780070ee2b}} \#define {\bfseries SAMPLE\+\_\+\+RATE}~8000 \item \mbox{\label{jibuf_8c_ab8733cbd19aa79e877887c282ef4bb82}} \#define {\bfseries JIBUF\+\_\+\+DEFAULT\+\_\+\+MIN\+\_\+\+DELAY\+\_\+\+MS}~60 \item \mbox{\label{jibuf_8c_a83fc4d5185ca8ff1c8a36ad787773365}} \#define {\bfseries JIBUF\+\_\+\+DEFAULT\+\_\+\+MAX\+\_\+\+DELAY\+\_\+\+MS}~200 \item \mbox{\label{jibuf_8c_a98f5365acdbe187488dc29d4bf1b2f38}} \#define {\bfseries JIBUF\+\_\+\+REFERENCE\+\_\+\+TS\+\_\+\+FREQ}~60 \item \mbox{\label{jibuf_8c_a919ae3c1b4ed76e5efe2c0c6e52403f7}} \#define {\bfseries JIBUF\+\_\+\+BUFFER\+\_\+\+RECALC\+\_\+\+FREQ}~40 \item \mbox{\label{jibuf_8c_a8002117af96e70c6095b090a03db296e}} \#define {\bfseries JIBUF\+\_\+\+ALLOWED\+\_\+\+PKT\+\_\+\+DROP}~3 \item \mbox{\label{jibuf_8c_a3617ccbb8af0b78b0864f845100b9abb}} \#define {\bfseries JIBUF\+\_\+\+ALLOWED\+\_\+\+PKT\+\_\+\+CONSECUTIVE\+\_\+\+DROP}~1 \item \mbox{\label{jibuf_8c_ab6b74faca0c45f42852f275276487352}} \#define {\bfseries JIBUF\+\_\+\+BUFFER\+\_\+\+INC\+\_\+\+STEP}~20 \item \mbox{\label{jibuf_8c_a92faab8b2e1de77527e20fc0394f9561}} \#define {\bfseries JIBUF\+\_\+\+BUFFER\+\_\+\+DEC\+\_\+\+STEP}~5 \item \mbox{\label{jibuf_8c_a71209ad037c242e1a2ff468a945facf6}} \#define {\bfseries JIBUF\+\_\+\+SKEW\+\_\+\+WEIGHT}~((double)1/32) \item \mbox{\label{jibuf_8c_af07d4d998deea1decf33caa52a18ff40}} \#define {\bfseries JIBUF\+\_\+\+MSGB\+\_\+\+CB}(\+\_\+\+\_\+msgb)~((struct osmo\+\_\+jibuf\+\_\+msgb\+\_\+cb $\ast$)\&((\+\_\+\+\_\+msgb)-\/$>$cb[0])) \end{DoxyCompactItemize} \doxysubsection*{Functions} \begin{DoxyCompactItemize} \item struct \textbf{ osmo\+\_\+jibuf} $\ast$ \textbf{ osmo\+\_\+jibuf\+\_\+alloc} (void $\ast$talloc\+\_\+ctx) \begin{DoxyCompactList}\small\item\em Allocate a new jitter buffer instance. \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+jibuf\+\_\+delete} (struct \textbf{ osmo\+\_\+jibuf} $\ast$jb) \begin{DoxyCompactList}\small\item\em Destroy a previously allocated jitter buffer instance. \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+jibuf\+\_\+enqueue} (struct \textbf{ osmo\+\_\+jibuf} $\ast$jb, struct msgb $\ast$msg) \begin{DoxyCompactList}\small\item\em Try to enqueue a packet into the jitter buffer. \end{DoxyCompactList}\item bool \textbf{ osmo\+\_\+jibuf\+\_\+empty} (struct \textbf{ osmo\+\_\+jibuf} $\ast$jb) \begin{DoxyCompactList}\small\item\em Check whether the jitter buffer instance has packets queued or not. \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+jibuf\+\_\+set\+\_\+min\+\_\+delay} (struct \textbf{ osmo\+\_\+jibuf} $\ast$jb, uint32\+\_\+t min\+\_\+delay) \begin{DoxyCompactList}\small\item\em Set minimum buffer size for the jitter buffer. \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+jibuf\+\_\+set\+\_\+max\+\_\+delay} (struct \textbf{ osmo\+\_\+jibuf} $\ast$jb, uint32\+\_\+t max\+\_\+delay) \begin{DoxyCompactList}\small\item\em Set maximum buffer size for the jitter buffer. \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+jibuf\+\_\+enable\+\_\+skew\+\_\+compensation} (struct \textbf{ osmo\+\_\+jibuf} $\ast$jb, bool enable) \begin{DoxyCompactList}\small\item\em Toggle use of skew detection and compensation mechanism. \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+jibuf\+\_\+set\+\_\+dequeue\+\_\+cb} (struct \textbf{ osmo\+\_\+jibuf} $\ast$jb, osmo\+\_\+jibuf\+\_\+dequeue\+\_\+cb dequeue\+\_\+cb, void $\ast$cb\+\_\+data) \begin{DoxyCompactList}\small\item\em Set dequeue callback for the jitter buffer. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} Osmocom Jitter Buffer helpers.