Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
multicat
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
VideoLAN
multicat
Commits
2072c30a
Commit
2072c30a
authored
Jul 16, 2017
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
aggregartp: Add support for null weights
parent
f83d9aea
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
9 deletions
+35
-9
NEWS
NEWS
+1
-0
aggregartp.c
aggregartp.c
+23
-6
reordertp.c
reordertp.c
+11
-3
No files found.
NEWS
View file @
2072c30a
...
...
@@ -2,6 +2,7 @@ Changes between 2.2 and 2.3:
----------------------------
* Fix potential segfault in aggregartp
* Do not do retx in reordertp with multicast inputs
* Add support for null weights in aggregartp and reordertp
Changes between 2.1 and 2.2:
----------------------------
...
...
aggregartp.c
View file @
2072c30a
...
...
@@ -86,6 +86,7 @@ static void usage(void)
{
msg_Raw
(
NULL
,
"Usage: aggregartp [-i <RT priority>] [-l <syslogtag>] [-t <ttl>] [-w] [-o <SSRC IP>] [-U] [-x <retx buffer>] [-X <retx URL>] [-m <payload size>] [-R <RTP header>] @<src host> <dest host 1>[,<weight 1>] ... [<dest host N>,<weight N>]"
);
msg_Raw
(
NULL
,
" host format: [<connect addr>[:<connect port>]][@[<bind addr][:<bind port>]]"
);
msg_Raw
(
NULL
,
" weight: integer, higher value means more capacity, or 0 for all packets"
);
msg_Raw
(
NULL
,
" -w: overwrite RTP timestamps"
);
msg_Raw
(
NULL
,
" -o: overwrite RTP SSRC"
);
msg_Raw
(
NULL
,
" -U: prepend RTP header"
);
...
...
@@ -139,6 +140,17 @@ static void SendBlock( int i_fd, struct sockaddr *p_sout,
}
}
/*****************************************************************************
* SendBlock0: send a block to all outputs with weight 0
*****************************************************************************/
static
void
SendBlock0
(
block_t
*
p_block
)
{
int
i
;
for
(
i
=
0
;
i
<
i_nb_outputs
;
i
++
)
if
(
!
p_outputs
[
i
].
i_weight
)
SendBlock
(
p_outputs
[
i
].
i_fd
,
NULL
,
0
,
p_block
);
}
/*****************************************************************************
* RetxQueue: store a packet in the retx queue
*****************************************************************************/
...
...
@@ -476,13 +488,18 @@ int main( int i_argc, char **pp_argv )
}
/* Output block */
output_t
*
p_output
=
NextOutput
();
SendBlock
(
p_output
->
i_fd
,
NULL
,
0
,
p_input_block
);
SendBlock0
(
p_input_block
);
if
(
i_max_weight
)
{
output_t
*
p_output
=
NextOutput
();
SendBlock
(
p_output
->
i_fd
,
NULL
,
0
,
p_input_block
);
p_output
->
i_weighted_size
+=
(
i_size
+
p_output
->
i_remainder
)
/
p_output
->
i_weight
;
p_output
->
i_remainder
=
(
i_size
+
p_output
->
i_remainder
)
%
p_output
->
i_weight
;
p_output
->
i_weighted_size
+=
(
i_size
+
p_output
->
i_remainder
)
/
p_output
->
i_weight
;
p_output
->
i_remainder
=
(
i_size
+
p_output
->
i_remainder
)
%
p_output
->
i_weight
;
}
RetxQueue
(
p_input_block
,
i_current_date
);
p_input_block
=
NULL
;
...
...
reordertp.c
View file @
2072c30a
...
...
@@ -83,6 +83,7 @@ static int i_output_fd;
static
input_t
*
p_inputs
=
NULL
;
static
int
i_nb_inputs
=
0
;
static
int
b_udp
=
0
;
static
int
b_redundance
=
0
;
static
block_t
*
p_first
=
NULL
;
static
block_t
**
pp_retx
=
NULL
;
...
...
@@ -114,9 +115,10 @@ static int i_last_retx_input = 0;
static
void
usage
(
void
)
{
msg_Raw
(
NULL
,
"Usage: reordertp [-i <RT priority>] [-l <syslogtag>] [-t <ttl>] [-b <buffer length>] [-U] [-g <max gap>] [-j <max jitter>] [-r <# of clock ref>] [-n <max retx burst>] [-x <reorder/retx delay>] [-X <retx URL>] [-m <payload size>] [-R <RTP header>] <src host 1> ... [<src host N>] <dest host>"
);
msg_Raw
(
NULL
,
"Usage: reordertp [-i <RT priority>] [-l <syslogtag>] [-t <ttl>] [-b <buffer length>] [-U] [-
D] [-
g <max gap>] [-j <max jitter>] [-r <# of clock ref>] [-n <max retx burst>] [-x <reorder/retx delay>] [-X <retx URL>] [-m <payload size>] [-R <RTP header>] <src host 1> ... [<src host N>] <dest host>"
);
msg_Raw
(
NULL
,
" host format: [<connect addr>[:<connect port>]][@[<bind addr][:<bind port>]]"
);
msg_Raw
(
NULL
,
" -U: strip RTP header"
);
msg_Raw
(
NULL
,
" -D: input has redundant packets"
);
msg_Raw
(
NULL
,
" -b: buffer length in ms [default 400]"
);
msg_Raw
(
NULL
,
" -g: max gap between two clock references in ms [default 300]"
);
msg_Raw
(
NULL
,
" -j: max jitter in ms [default 150]"
);
...
...
@@ -282,7 +284,9 @@ static void RetxCheck( uint64_t i_current_date )
if
(
i_current_seqnum
==
i_prev_seqnum
)
{
msg_Dbg
(
NULL
,
"duplicate RTP packet %hu"
,
i_current_seqnum
);
if
(
!
b_redundance
)
msg_Dbg
(
NULL
,
"duplicate RTP packet %hu"
,
i_current_seqnum
);
RetxDereference
(
p_current
);
free
(
p_current
);
continue
;
...
...
@@ -459,7 +463,7 @@ int main( int i_argc, char **pp_argv )
pfd[i_nb_inputs - 1].fd = i_fd; \
pfd[i_nb_inputs - 1].events = POLLIN | POLLERR | POLLRDHUP | POLLHUP;
while
(
(
c
=
getopt
(
i_argc
,
pp_argv
,
"i:l:t:b:g:j:r:n:x:X:Um:R:h"
))
!=
-
1
)
while
(
(
c
=
getopt
(
i_argc
,
pp_argv
,
"i:l:t:b:g:j:r:n:x:X:U
D
m:R:h"
))
!=
-
1
)
{
switch
(
c
)
{
...
...
@@ -514,6 +518,10 @@ int main( int i_argc, char **pp_argv )
b_udp
=
1
;
break
;
case
'D'
:
b_redundance
=
1
;
break
;
case
'm'
:
i_asked_payload_size
=
strtol
(
optarg
,
NULL
,
0
);
break
;
...
...
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