correct comment
[asterisk/asterisk.git] / jitterbuf.h
index 1cec726..cd8be0d 100755 (executable)
@@ -42,6 +42,7 @@ extern "C" {
 #define JB_NOFRAME     2
 #define JB_INTERP      3
 #define JB_DROP                4
 #define JB_NOFRAME     2
 #define JB_INTERP      3
 #define JB_DROP                4
+#define JB_SCHED       5
 
 /* frame types */
 #define JB_TYPE_CONTROL        0
 
 /* frame types */
 #define JB_TYPE_CONTROL        0
@@ -49,7 +50,17 @@ extern "C" {
 #define JB_TYPE_VIDEO  2  /* reserved */
 #define JB_TYPE_SILENCE        3
 
 #define JB_TYPE_VIDEO  2  /* reserved */
 #define JB_TYPE_SILENCE        3
 
+
+typedef struct jb_conf {
+       /* settings */
+       long max_jitterbuf;     /* defines a hard clamp to use in setting the jitter buffer delay */
+       long resync_threshold;  /* the jb will resync when delay increases to (2 * jitter) + this param */
+       long max_contig_interp; /* the max interp frames to return in a row */
+} jb_conf;
+
 typedef struct jb_info {
 typedef struct jb_info {
+       jb_conf conf;
+
        /* statistics */
        long frames_in;         /* number of frames input to the jitterbuffer.*/
        long frames_out;        /* number of frames output from the jitterbuffer.*/
        /* statistics */
        long frames_in;         /* number of frames input to the jitterbuffer.*/
        long frames_out;        /* number of frames output from the jitterbuffer.*/
@@ -70,10 +81,7 @@ typedef struct jb_info {
        long last_delay;        /* the last now added to history */
        long cnt_delay_discont; /* the count of discontinuous delays */
        long resync_offset;     /* the amount to offset ts to support resyncs */
        long last_delay;        /* the last now added to history */
        long cnt_delay_discont; /* the count of discontinuous delays */
        long resync_offset;     /* the amount to offset ts to support resyncs */
-
-       /* settings */
-       long max_jitterbuf;     /* defines a hard clamp to use in setting the jitter buffer delay */
-       long resync_threshold;  /* the jb will resync when delay increases to (2 * jitter) + this param */
+       long cnt_contig_interp; /* the number of contiguous interp frames returned */
 } jb_info;
 
 typedef struct jb_frame {
 } jb_info;
 
 typedef struct jb_frame {
@@ -112,7 +120,11 @@ void                       jb_destroy(jitterbuf *jb);
 void                   jb_reset(jitterbuf *jb);
 
 /* queue a frame data=frame data, timings (in ms): ms=length of frame (for voice), ts=ts (sender's time) 
 void                   jb_reset(jitterbuf *jb);
 
 /* queue a frame data=frame data, timings (in ms): ms=length of frame (for voice), ts=ts (sender's time) 
- * now=now (in receiver's time)*/
+ * now=now (in receiver's time) return value is one of 
+ * JB_OK: Frame added. Last call to jb_next() still valid
+ * JB_DROP: Drop this frame immediately
+ * JB_SCHED: Frame added. Call jb_next() to get a new time for the next frame
+ */
 int                    jb_put(jitterbuf *jb, void *data, int type, long ms, long ts, long now);
 
 /* get a frame for time now (receiver's time)  return value is one of
 int                    jb_put(jitterbuf *jb, void *data, int type, long ms, long ts, long now);
 
 /* get a frame for time now (receiver's time)  return value is one of
@@ -134,11 +146,11 @@ long                      jb_next(jitterbuf *jb);
 /* get jitterbuf info: only "statistics" may be valid */
 int                    jb_getinfo(jitterbuf *jb, jb_info *stats);
 
 /* get jitterbuf info: only "statistics" may be valid */
 int                    jb_getinfo(jitterbuf *jb, jb_info *stats);
 
-/* set jitterbuf info: only "settings" may be honored */
-int                    jb_setinfo(jitterbuf *jb, jb_info *settings);
+/* set jitterbuf conf */
+int                    jb_setconf(jitterbuf *jb, jb_conf *conf);
 
 typedef                void (*jb_output_function_t)(const char *fmt, ...);
 
 typedef                void (*jb_output_function_t)(const char *fmt, ...);
-void                   jb_setoutput(jb_output_function_t warn, jb_output_function_t err, jb_output_function_t dbg);
+void                   jb_setoutput(jb_output_function_t err, jb_output_function_t warn, jb_output_function_t dbg);
 
 #ifdef __cplusplus
 }
 
 #ifdef __cplusplus
 }