Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
savoirfairelinux
jami-daemon
Commits
86343ef2
Commit
86343ef2
authored
Sep 04, 2007
by
Alexandre Bourget
Browse files
Fix comments on libiax2
parent
a1f6c4ac
Changes
2
Hide whitespace changes
Inline
Side-by-side
libs/libiax2/src/iax2.h
View file @
86343ef2
...
...
@@ -158,57 +158,57 @@
/* Full frames are always delivered reliably */
struct
ast_iax2_full_hdr
{
unsigned
short
scallno
;
/** Source call number -- high bit must be 1 */
unsigned
short
dcallno
;
/** Destination call number -- high bit is 1 if retransmission */
unsigned
int
ts
;
/** 32-bit timestamp in milliseconds (from 1st transmission) */
unsigned
char
oseqno
;
/** Packet number (outgoing) */
unsigned
char
iseqno
;
/** Packet number (next incoming expected) */
char
type
;
/** Frame type */
unsigned
char
csub
;
/** Compressed subclass */
unsigned
short
scallno
;
/**
<
Source call number -- high bit must be 1 */
unsigned
short
dcallno
;
/**
<
Destination call number -- high bit is 1 if retransmission */
unsigned
int
ts
;
/**
<
32-bit timestamp in milliseconds (from 1st transmission) */
unsigned
char
oseqno
;
/**
<
Packet number (outgoing) */
unsigned
char
iseqno
;
/**
<
Packet number (next incoming expected) */
char
type
;
/**
<
Frame type */
unsigned
char
csub
;
/**
<
Compressed subclass */
unsigned
char
iedata
[
0
];
}
__PACKED
;
/* Mini header is used only for voice frames -- delivered unreliably */
struct
ast_iax2_mini_hdr
{
unsigned
short
callno
;
/** Source call number -- high bit must be 0, rest must be non-zero */
unsigned
short
ts
;
/** 16-bit Timestamp (high 16 bits from last ast_iax2_full_hdr) */
/** Frametype implicitly VOICE_FRAME */
/** subclass implicit from last ast_iax2_full_hdr */
unsigned
short
callno
;
/**
<
Source call number -- high bit must be 0, rest must be non-zero */
unsigned
short
ts
;
/**
<
16-bit Timestamp (high 16 bits from last ast_iax2_full_hdr) */
/**
<
Frametype implicitly VOICE_FRAME */
/**
<
subclass implicit from last ast_iax2_full_hdr */
unsigned
char
data
[
0
];
}
__PACKED
;
struct
ast_iax2_meta_hdr
{
unsigned
short
zeros
;
/** Zeros field -- must be zero */
unsigned
char
metacmd
;
/** Meta command */
unsigned
char
cmddata
;
/** Command Data */
unsigned
short
zeros
;
/**
<
Zeros field -- must be zero */
unsigned
char
metacmd
;
/**
<
Meta command */
unsigned
char
cmddata
;
/**
<
Command Data */
unsigned
char
data
[
0
];
}
__PACKED
;
struct
ast_iax2_video_hdr
{
unsigned
short
zeros
;
/** Zeros field -- must be zero */
unsigned
short
callno
;
/** Video call number */
unsigned
short
ts
;
/** Timestamp and mark if present */
unsigned
short
zeros
;
/**
<
Zeros field -- must be zero */
unsigned
short
callno
;
/**
<
Video call number */
unsigned
short
ts
;
/**
<
Timestamp and mark if present */
unsigned
char
data
[
0
];
}
__PACKED
;
struct
ast_iax2_meta_trunk_hdr
{
unsigned
int
ts
;
/** 32-bit timestamp for all messages */
unsigned
int
ts
;
/**
<
32-bit timestamp for all messages */
unsigned
char
data
[
0
];
}
__PACKED
;
struct
ast_iax2_meta_trunk_entry
{
unsigned
short
callno
;
/** Call number */
unsigned
short
len
;
/** Length of data for this callno */
unsigned
short
callno
;
/**
<
Call number */
unsigned
short
len
;
/**
<
Length of data for this callno */
}
__PACKED
;
#define IAX_FIRMWARE_MAGIC 0x69617879
struct
ast_iax2_firmware_header
{
unsigned
int
magic
;
/** Magic number */
unsigned
short
version
;
/** Software version */
unsigned
char
devname
[
16
];
/** Device */
unsigned
int
datalen
;
/** Data length of file beyond header */
unsigned
char
chksum
[
16
];
/** Checksum of all data */
unsigned
int
magic
;
/**
<
Magic number */
unsigned
short
version
;
/**
<
Software version */
unsigned
char
devname
[
16
];
/**
<
Device */
unsigned
int
datalen
;
/**
<
Data length of file beyond header */
unsigned
char
chksum
[
16
];
/**
<
Checksum of all data */
unsigned
char
data
[
0
];
}
__PACKED
;
...
...
libs/libiax2/src/jitterbuf.h
View file @
86343ef2
...
...
@@ -55,43 +55,43 @@ enum jb_frame_type {
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 */
long
target_extra
;
/* amount of additional jitterbuffer adjustment, overrides JB_TARGET_EXTRA */
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 */
long
target_extra
;
/*
*<
amount of additional jitterbuffer adjustment, overrides JB_TARGET_EXTRA */
}
jb_conf
;
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.*/
long
frames_late
;
/* number of frames which were too late, and dropped.*/
long
frames_lost
;
/* number of missing frames.*/
long
frames_dropped
;
/* number of frames dropped (shrinkage) */
long
frames_ooo
;
/* number of frames received out-of-order */
long
frames_cur
;
/* number of frames presently in jb, awaiting delivery.*/
long
jitter
;
/* jitter measured within current history interval*/
long
min
;
/* minimum lateness within current history interval */
long
current
;
/* the present jitterbuffer adjustment */
long
target
;
/* the target jitterbuffer adjustment */
long
losspct
;
/* recent lost frame percentage (* 1000) */
long
next_voice_ts
;
/* the ts of the next frame to be read from the jb - in receiver's time */
long
last_voice_ms
;
/* the duration of the last voice frame */
long
silence_begin_ts
;
/* the time of the last CNG frame, when in silence */
long
last_adjustment
;
/* the time of the last adjustment */
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
cnt_contig_interp
;
/* the number of contiguous interp frames returned */
long
frames_in
;
/*
*<
number of frames input to the jitterbuffer.*/
long
frames_out
;
/*
*<
number of frames output from the jitterbuffer.*/
long
frames_late
;
/*
*<
number of frames which were too late, and dropped.*/
long
frames_lost
;
/*
*<
number of missing frames.*/
long
frames_dropped
;
/*
*<
number of frames dropped (shrinkage) */
long
frames_ooo
;
/*
*<
number of frames received out-of-order */
long
frames_cur
;
/*
*<
number of frames presently in jb, awaiting delivery.*/
long
jitter
;
/*
*<
jitter measured within current history interval*/
long
min
;
/*
*<
minimum lateness within current history interval */
long
current
;
/*
*<
the present jitterbuffer adjustment */
long
target
;
/*
*<
the target jitterbuffer adjustment */
long
losspct
;
/*
*<
recent lost frame percentage (* 1000) */
long
next_voice_ts
;
/*
*<
the ts of the next frame to be read from the jb - in receiver's time */
long
last_voice_ms
;
/*
*<
the duration of the last voice frame */
long
silence_begin_ts
;
/*
*<
the time of the last CNG frame, when in silence */
long
last_adjustment
;
/*
*<
the time of the last adjustment */
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
cnt_contig_interp
;
/*
*<
the number of contiguous interp frames returned */
}
jb_info
;
typedef
struct
jb_frame
{
void
*
data
;
/* the frame data */
long
ts
;
/* the relative delivery time expected */
long
ms
;
/* the time covered by this frame, in sec/8000 */
enum
jb_frame_type
type
;
/* the type of frame */
void
*
data
;
/*
*<
the frame data */
long
ts
;
/*
*<
the relative delivery time expected */
long
ms
;
/*
*<
the time covered by this frame, in sec/8000 */
enum
jb_frame_type
type
;
/*
*<
the type of frame */
struct
jb_frame
*
next
,
*
prev
;
}
jb_frame
;
...
...
@@ -99,29 +99,30 @@ typedef struct jitterbuf {
jb_info
info
;
/* history */
long
history
[
JB_HISTORY_SZ
];
/* history */
int
hist_ptr
;
/* points to index in history for next entry */
long
hist_maxbuf
[
JB_HISTORY_MAXBUF_SZ
];
/* a sorted buffer of the max delays (highest first) */
long
hist_minbuf
[
JB_HISTORY_MAXBUF_SZ
];
/* a sorted buffer of the min delays (lowest first) */
int
hist_maxbuf_valid
;
/* are the "maxbuf"/minbuf valid? */
jb_frame
*
frames
;
/* queued frames */
jb_frame
*
free
;
/* free frames (avoid malloc?) */
long
history
[
JB_HISTORY_SZ
];
/*
*<
history */
int
hist_ptr
;
/*
*<
points to index in history for next entry */
long
hist_maxbuf
[
JB_HISTORY_MAXBUF_SZ
];
/*
*<
a sorted buffer of the max delays (highest first) */
long
hist_minbuf
[
JB_HISTORY_MAXBUF_SZ
];
/*
*<
a sorted buffer of the min delays (lowest first) */
int
hist_maxbuf_valid
;
/*
*<
are the "maxbuf"/minbuf valid? */
jb_frame
*
frames
;
/*
*<
queued frames */
jb_frame
*
free
;
/*
*<
free frames (avoid malloc?) */
}
jitterbuf
;
/* new jitterbuf */
/*
*
new jitterbuf */
jitterbuf
*
jb_new
(
void
);
/* destroy jitterbuf */
/*
*
destroy jitterbuf */
void
jb_destroy
(
jitterbuf
*
jb
);
/* reset jitterbuf */
/*
*
reset jitterbuf */
/* NOTE: The jitterbuffer should be empty before you call this, otherwise
* you will leak queued frames, and some internal structures */
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)
/** 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) return value is one of
* JB_OK: Frame added. Last call to jb_next() still valid
* JB_DROP: Drop this frame immediately
...
...
@@ -129,7 +130,8 @@ void jb_reset(jitterbuf *jb);
*/
enum
jb_return_code
jb_put
(
jitterbuf
*
jb
,
void
*
data
,
const
enum
jb_frame_type
type
,
long
ms
,
long
ts
,
long
now
);
/* get a frame for time now (receiver's time) return value is one of
/** get a frame for time now (receiver's time) return value is one of
*
* JB_OK: You've got frame!
* JB_DROP: Here's an audio frame you should just drop. Ask me again for this time..
* JB_NOFRAME: There's no frame scheduled for this time.
...
...
@@ -138,7 +140,7 @@ enum jb_return_code jb_put(jitterbuf *jb, void *data, const enum jb_frame_type t
*/
enum
jb_return_code
jb_get
(
jitterbuf
*
jb
,
jb_frame
*
frame
,
long
now
,
long
interpl
);
/* unconditionally get frames from jitterbuf until empty */
/*
*
unconditionally get frames from jitterbuf until empty */
enum
jb_return_code
jb_getall
(
jitterbuf
*
jb
,
jb_frame
*
frameout
);
/* when is the next frame due out, in receiver's time (0=EMPTY)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment