Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dvblast
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
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
dvblast
Commits
486ca354
Commit
486ca354
authored
Jun 08, 2011
by
Georgi Chorbadzhiyski
Committed by
Christophe Massiot
Jun 08, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Add support for EMM and ECM pass-through
parent
342c4f9f
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
292 additions
and
3 deletions
+292
-3
demux.c
demux.c
+254
-0
dvblast.1
dvblast.1
+7
-1
dvblast.c
dvblast.c
+27
-2
dvblast.h
dvblast.h
+4
-0
No files found.
demux.c
View file @
486ca354
This diff is collapsed.
Click to expand it.
dvblast.1
View file @
486ca354
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
DVBlast \- Simple and powerful dvb streaming application
DVBlast \- Simple and powerful dvb streaming application
.SH SYNOPSIS
.SH SYNOPSIS
.B dvblast
.B dvblast
[\fI-q\fR] \fI-c <config_file>\fR [\fI-r <remote_socket>\fR] [\fI-t <ttl>\fR] [\fI-o <SSRC_IP>\fR] [\fI-i <RT_priority>\fR] [\fI-a <adapter>\fR] [\fI-n <frontend number>\fR] [\fI-S <diseqc>\fR] \fI-f <frequency>\fR [\fI-F <fec inner>\fR] [\fI-R <rolloff>\fR] ] [\fI-s <symbol_rate>\fR] [\fI-v <0|13|18>\fR] [\fI-p\fR] [\fI-b <bandwidth>\fR] [\fI-m <modulation\fR] [\fI-u\fR] [\fI-W\fR] [\fI-U\fR] [\fI-d <dest_IP:port>\fR] [\fI-e\fR] [\fI-T\fR] [\fI-l\fR]
[\fI-q\fR] \fI-c <config_file>\fR [\fI-r <remote_socket>\fR] [\fI-t <ttl>\fR] [\fI-o <SSRC_IP>\fR] [\fI-i <RT_priority>\fR] [\fI-a <adapter>\fR] [\fI-n <frontend number>\fR] [\fI-S <diseqc>\fR] \fI-f <frequency>\fR [\fI-F <fec inner>\fR] [\fI-R <rolloff>\fR] ] [\fI-s <symbol_rate>\fR] [\fI-v <0|13|18>\fR] [\fI-p\fR] [\fI-b <bandwidth>\fR] [\fI-m <modulation\fR] [\fI-u\fR] [\fI-W\fR] [\fI-U\fR] [\fI-d <dest_IP:port>\fR] [\fI-
W\fR] [\fI-Y\fR] [\fI-
e\fR] [\fI-T\fR] [\fI-l\fR]
.SH DESCRIPTION
.SH DESCRIPTION
DVBlast is a simple and powerful streaming application based on the linux-dvb API.
DVBlast is a simple and powerful streaming application based on the linux-dvb API.
It opens a DVB device, tunes it, places PID filters, configures a CAM module, and demultiplexes the packets to several RTP outputs.
It opens a DVB device, tunes it, places PID filters, configures a CAM module, and demultiplexes the packets to several RTP outputs.
...
@@ -35,6 +35,12 @@ Duplicate all received packets to a given destination
...
@@ -35,6 +35,12 @@ Duplicate all received packets to a given destination
\fB\-D\fR, \fB\-\-rtp\-input\fR
\fB\-D\fR, \fB\-\-rtp\-input\fR
Read packets from a multicast address instead of a DVB card
Read packets from a multicast address instead of a DVB card
.TP
.TP
\fB\-W\fR, \fB\-\-emm\-passthrough\fR
Enable EMM pass through (CA system data)
.TP
\fB\-Y\fR, \fB\-\-ecm\-passthrough\fR
Enable ECM pass through (CA program data)
.TP
\fB\-e\fR, \fB\-\-epg\-passthrough\fR
\fB\-e\fR, \fB\-\-epg\-passthrough\fR
Enable EPG pass through (EIT data)
Enable EPG pass through (EIT data)
.TP
.TP
...
...
dvblast.c
View file @
486ca354
...
@@ -95,6 +95,9 @@ volatile sig_atomic_t b_hup_received = 0;
...
@@ -95,6 +95,9 @@ volatile sig_atomic_t b_hup_received = 0;
int
i_verbose
=
DEFAULT_VERBOSITY
;
int
i_verbose
=
DEFAULT_VERBOSITY
;
int
i_syslog
=
0
;
int
i_syslog
=
0
;
bool
b_enable_emm
=
false
;
bool
b_enable_ecm
=
false
;
uint8_t
pi_ssrc_global
[
4
]
=
{
0
,
0
,
0
,
0
};
uint8_t
pi_ssrc_global
[
4
]
=
{
0
,
0
,
0
,
0
};
static
int
b_udp_global
=
0
;
static
int
b_udp_global
=
0
;
static
int
b_dvb_global
=
0
;
static
int
b_dvb_global
=
0
;
...
@@ -138,7 +141,9 @@ static void config_Defaults( output_config_t *p_config )
...
@@ -138,7 +141,9 @@ static void config_Defaults( output_config_t *p_config )
p_config
->
i_config
=
(
b_udp_global
?
OUTPUT_UDP
:
0
)
|
p_config
->
i_config
=
(
b_udp_global
?
OUTPUT_UDP
:
0
)
|
(
b_dvb_global
?
OUTPUT_DVB
:
0
)
|
(
b_dvb_global
?
OUTPUT_DVB
:
0
)
|
(
b_epg_global
?
OUTPUT_EPG
:
0
);
(
b_epg_global
?
OUTPUT_EPG
:
0
)
|
(
b_enable_emm
?
OUTPUT_EMM
:
0
)
|
(
b_enable_ecm
?
OUTPUT_ECM
:
0
);
p_config
->
i_max_retention
=
i_retention_global
;
p_config
->
i_max_retention
=
i_retention_global
;
p_config
->
i_output_latency
=
i_latency_global
;
p_config
->
i_output_latency
=
i_latency_global
;
p_config
->
i_tsid
=
-
1
;
p_config
->
i_tsid
=
-
1
;
...
@@ -187,6 +192,14 @@ bool config_ParseHost( output_config_t *p_config, char *psz_string )
...
@@ -187,6 +192,14 @@ bool config_ParseHost( output_config_t *p_config, char *psz_string )
p_config
->
i_config
|=
OUTPUT_DVB
;
p_config
->
i_config
|=
OUTPUT_DVB
;
else
if
(
IS_OPTION
(
"epg"
)
)
else
if
(
IS_OPTION
(
"epg"
)
)
p_config
->
i_config
|=
OUTPUT_EPG
;
p_config
->
i_config
|=
OUTPUT_EPG
;
else
if
(
IS_OPTION
(
"emm"
)
)
p_config
->
i_config
|=
OUTPUT_EMM
;
else
if
(
IS_OPTION
(
"noemm"
)
)
p_config
->
i_config
&=
~
OUTPUT_EMM
;
else
if
(
IS_OPTION
(
"ecm"
)
)
p_config
->
i_config
|=
OUTPUT_ECM
;
else
if
(
IS_OPTION
(
"noecm"
)
)
p_config
->
i_config
&=
~
OUTPUT_ECM
;
else
if
(
IS_OPTION
(
"tsid="
)
)
else
if
(
IS_OPTION
(
"tsid="
)
)
p_config
->
i_tsid
=
strtol
(
ARG_OPTION
(
"tsid="
),
NULL
,
0
);
p_config
->
i_tsid
=
strtol
(
ARG_OPTION
(
"tsid="
),
NULL
,
0
);
else
if
(
IS_OPTION
(
"retention="
)
)
else
if
(
IS_OPTION
(
"retention="
)
)
...
@@ -418,6 +431,8 @@ void usage()
...
@@ -418,6 +431,8 @@ void usage()
msg_Raw
(
NULL
,
" -c --config-file <config file>"
);
msg_Raw
(
NULL
,
" -c --config-file <config file>"
);
msg_Raw
(
NULL
,
" -C --dvb-compliance pass through or build the mandatory DVB tables"
);
msg_Raw
(
NULL
,
" -C --dvb-compliance pass through or build the mandatory DVB tables"
);
msg_Raw
(
NULL
,
" -d --duplicate duplicate all received packets to a given destination"
);
msg_Raw
(
NULL
,
" -d --duplicate duplicate all received packets to a given destination"
);
msg_Raw
(
NULL
,
" -W --emm-passthrough pass through EMM data (CA system data)"
);
msg_Raw
(
NULL
,
" -Y --ecm-passthrough pass through ECM data (CA program data)"
);
msg_Raw
(
NULL
,
" -e --epg-passthrough pass through DVB EIT schedule tables"
);
msg_Raw
(
NULL
,
" -e --epg-passthrough pass through DVB EIT schedule tables"
);
msg_Raw
(
NULL
,
" -E --retention maximum retention allowed between input and output (default: 40 ms)"
);
msg_Raw
(
NULL
,
" -E --retention maximum retention allowed between input and output (default: 40 ms)"
);
msg_Raw
(
NULL
,
" -L --latency maximum latency allowed between input and output (default: 100 ms)"
);
msg_Raw
(
NULL
,
" -L --latency maximum latency allowed between input and output (default: 100 ms)"
);
...
@@ -497,6 +512,8 @@ int main( int i_argc, char **pp_argv )
...
@@ -497,6 +512,8 @@ int main( int i_argc, char **pp_argv )
{
"asi-adapter"
,
required_argument
,
NULL
,
'A'
},
{
"asi-adapter"
,
required_argument
,
NULL
,
'A'
},
{
"any-type"
,
no_argument
,
NULL
,
'z'
},
{
"any-type"
,
no_argument
,
NULL
,
'z'
},
{
"dvb-compliance"
,
no_argument
,
NULL
,
'C'
},
{
"dvb-compliance"
,
no_argument
,
NULL
,
'C'
},
{
"emm-passthrough"
,
no_argument
,
NULL
,
'W'
},
{
"ecm-passthrough"
,
no_argument
,
NULL
,
'Y'
},
{
"epg-passthrough"
,
no_argument
,
NULL
,
'e'
},
{
"epg-passthrough"
,
no_argument
,
NULL
,
'e'
},
{
"network-name"
,
no_argument
,
NULL
,
'M'
},
{
"network-name"
,
no_argument
,
NULL
,
'M'
},
{
"network-id"
,
no_argument
,
NULL
,
'N'
},
{
"network-id"
,
no_argument
,
NULL
,
'N'
},
...
@@ -511,7 +528,7 @@ int main( int i_argc, char **pp_argv )
...
@@ -511,7 +528,7 @@ int main( int i_argc, char **pp_argv )
{
0
,
0
,
0
,
0
}
{
0
,
0
,
0
,
0
}
};
};
while
(
(
c
=
getopt_long
(
i_argc
,
pp_argv
,
"q::c:r:t:o:i:a:n:f:F:R:s:S:v:pb:I:m:P:K:G:H:X:O:uwUTL:E:d:D:A:lzCeM:N:j:J:x:Q:hV"
,
long_options
,
NULL
))
!=
-
1
)
while
(
(
c
=
getopt_long
(
i_argc
,
pp_argv
,
"q::c:r:t:o:i:a:n:f:F:R:s:S:v:pb:I:m:P:K:G:H:X:O:uwUTL:E:d:D:A:lzC
WY
eM:N:j:J:x:Q:hV"
,
long_options
,
NULL
))
!=
-
1
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -711,6 +728,14 @@ int main( int i_argc, char **pp_argv )
...
@@ -711,6 +728,14 @@ int main( int i_argc, char **pp_argv )
b_dvb_global
=
1
;
b_dvb_global
=
1
;
break
;
break
;
case
'W'
:
b_enable_emm
=
true
;
break
;
case
'Y'
:
b_enable_ecm
=
true
;
break
;
case
'e'
:
case
'e'
:
b_epg_global
=
1
;
b_epg_global
=
1
;
break
;
break
;
...
...
dvblast.h
View file @
486ca354
...
@@ -52,6 +52,8 @@
...
@@ -52,6 +52,8 @@
* Bit 4 : Set for file / FIFO output, unset for network (future use)
* Bit 4 : Set for file / FIFO output, unset for network (future use)
* Bit 5 : Set if DVB conformance tables are inserted
* Bit 5 : Set if DVB conformance tables are inserted
* Bit 6 : Set if DVB EIT schedule tables are forwarded
* Bit 6 : Set if DVB EIT schedule tables are forwarded
* Bit 7 : Set if EMM pids and CAT are forwarded
* Bit 8 : Set if ECM pids are forwarded
*****************************************************************************/
*****************************************************************************/
#define OUTPUT_WATCH 0x01
#define OUTPUT_WATCH 0x01
...
@@ -61,6 +63,8 @@
...
@@ -61,6 +63,8 @@
#define OUTPUT_FILE 0x10
#define OUTPUT_FILE 0x10
#define OUTPUT_DVB 0x20
#define OUTPUT_DVB 0x20
#define OUTPUT_EPG 0x40
#define OUTPUT_EPG 0x40
#define OUTPUT_EMM (1 << 7)
#define OUTPUT_ECM (1 << 8)
typedef
int64_t
mtime_t
;
typedef
int64_t
mtime_t
;
...
...
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