Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
vlc
Commits
51a887bb
Commit
51a887bb
authored
Mar 23, 2011
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
DTV: adjust DVB-S frequency and send tone
This is done according to oscillator configuration.
parent
af9370e9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
101 additions
and
19 deletions
+101
-19
modules/access/dtv/access.c
modules/access/dtv/access.c
+45
-16
modules/access/dtv/dtv.h
modules/access/dtv/dtv.h
+2
-1
modules/access/dtv/linux.c
modules/access/dtv/linux.c
+54
-2
No files found.
modules/access/dtv/access.c
View file @
51a887bb
...
...
@@ -132,6 +132,7 @@ static const char *const hierarchy_user[] = { N_("Automatic"),
};
#define PILOT_TEXT N_("Pilot")
#define ROLLOFF_TEXT N_("Roll-off factor")
const
int
rolloff_vlc
[]
=
{
-
1
,
35
,
20
,
25
,
...
...
@@ -155,6 +156,31 @@ static const char *const polarization_user[] = { N_("Unspecified (0V)"),
"the receiver are long, higher voltage may be required.\n" \
"Not all receivers support this.")
#define LNB_LOW_TEXT N_("Local oscillator low frequency (kHz)")
#define LNB_HIGH_TEXT N_("Local oscillator high frequency (kHz)")
#define LNB_LONGTEXT N_( \
"The downconverter (LNB) will substract the local oscillator frequency " \
"from the satellite transmission frequency. " \
"The intermediate frequency (IF) on the RF cable is the result.")
#define LNB_SWITCH_TEXT N_("Universal LNB switch frequency (kHz)")
#define LNB_SWITCH_LONGTEXT N_( \
"If the satellite transmission frequency exceeds the switch frequency, " \
"the oscillator high frequency will be used as reference. " \
"Furthermore the automatic continuous 22kHz tone will be sent.")
#define TONE_TEXT N_("Continuous 22kHz tone")
#define TONE_LONGTEXT N_( \
"A continuous tone at 22kHz can be sent on the cable. " \
"This normally selects the higher frequency band from a universal LNB.")
#if 0
#define SATNO_TEXT N_("DiSEqC LNB number")
#define SATNO_LONGTEXT N_( \
"If the satellite receiver is connected to multiple " \
"low noise block-downconverters (LNB) through a DiSEqC 1.0 switch, " \
"the correct LNB can be selected (1 to 4). " \
"If there is no switch, this parameter should be 0.")
#endif
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
...
...
@@ -166,7 +192,7 @@ vlc_module_begin ()
set_capability
(
"access"
,
0
)
set_callbacks
(
Open
,
Close
)
add_shortcut
(
"dtv"
,
"tv"
,
"dvb"
,
/* "radio", "dab",*/
"cable"
,
"dvb-c"
,
/*"satellite", "dvb-s", "dvb-s2",*/
"cable"
,
"dvb-c"
,
"satellite"
,
"dvb-s"
,
"dvb-s2"
,
"terrestrial"
,
"dvb-t"
,
"atsc"
)
/* All options starting with dvb- can be overriden in the MRL, so they
...
...
@@ -250,21 +276,21 @@ vlc_module_begin ()
add_bool
(
"dvb-high-voltage"
,
false
,
HIGH_VOLTAGE_TEXT
,
HIGH_VOLTAGE_LONGTEXT
,
false
)
#endif
#if 0
add_integer ("dvb-tone", -1, TONE_TEXT, TONE_LONGTEXT, true)
change_integer_list (tone_vlc, auto_off_on)
change_safe ()
add_integer ("dvb-lnb-lof1", 0, LNB_LOF1_TEXT, LNB_LOF1_LONGTEXT, true)
add_integer
(
"dvb-lnb-low"
,
0
,
LNB_LOW_TEXT
,
LNB_LONGTEXT
,
true
)
change_integer_range
(
0
,
0x7fffffff
)
change_safe (
)
add_integer ("dvb-lnb-
lof2", 0, LNB_LOF2_TEXT, LNB_LOF2
_LONGTEXT, true)
add_deprecated_alias
(
"dvb-lnb-lof1"
)
add_integer
(
"dvb-lnb-
high"
,
0
,
LNB_HIGH_TEXT
,
LNB
_LONGTEXT
,
true
)
change_integer_range
(
0
,
0x7fffffff
)
change_safe ()
add_integer ("dvb-lnb-slof", 0, LNB_SLOF_TEXT, LNB_SLOF_LONGTEXT, true)
add_deprecated_alias
(
"dvb-lnb-lof2"
)
add_integer
(
"dvb-lnb-switch"
,
11700000
,
LNB_SWITCH_TEXT
,
LNB_SWITCH_LONGTEXT
,
true
)
change_integer_range
(
0
,
0x7fffffff
)
change_safe ()
add_deprecated_alias
(
"dvb-lnb-slof"
)
add_integer
(
"dvb-tone"
,
-
1
,
TONE_TEXT
,
TONE_LONGTEXT
,
true
)
change_integer_list
(
auto_off_on_vlc
,
auto_off_on_user
)
#if 0
add_integer ("dvb-satno", 0, SATNO_TEXT, SATNO_LONGTEXT, true)
change_integer_
list (satno_vlc, satno_user
)
change_integer_
range (0, 4
)
change_safe ()
#endif
vlc_module_end
()
...
...
@@ -611,11 +637,14 @@ static char var_InheritPolarization (vlc_object_t *obj)
return
pol
;
}
static
int
sec_setup
(
vlc_object_t
*
obj
,
dvb_device_t
*
dev
)
static
int
sec_setup
(
vlc_object_t
*
obj
,
dvb_device_t
*
dev
,
unsigned
freq
)
{
char
pol
=
var_InheritPolarization
(
obj
);
unsigned
lowf
=
var_InheritInteger
(
obj
,
"dvb-lnb-low"
);
unsigned
highf
=
var_InheritInteger
(
obj
,
"dvb-lnb-high"
);
unsigned
switchf
=
var_InheritInteger
(
obj
,
"dvb-lnb-switch"
);
return
dvb_set_sec
(
dev
,
pol
);
return
dvb_set_sec
(
dev
,
freq
,
pol
,
lowf
,
highf
,
switchf
);
}
static
int
dvbs_setup
(
vlc_object_t
*
obj
,
dvb_device_t
*
dev
,
unsigned
freq
)
...
...
@@ -627,7 +656,7 @@ static int dvbs_setup (vlc_object_t *obj, dvb_device_t *dev, unsigned freq)
int
ret
=
dvb_set_dvbs
(
dev
,
freq
,
srate
,
fec
);
free
(
fec
);
if
(
ret
==
0
)
ret
=
sec_setup
(
obj
,
dev
);
ret
=
sec_setup
(
obj
,
dev
,
freq
);
return
ret
;
}
...
...
@@ -644,7 +673,7 @@ static int dvbs2_setup (vlc_object_t *obj, dvb_device_t *dev, unsigned freq)
free
(
fec
);
free
(
mod
);
if
(
ret
==
0
)
ret
=
sec_setup
(
obj
,
dev
);
ret
=
sec_setup
(
obj
,
dev
,
freq
);
return
ret
;
}
...
...
modules/access/dtv/dtv.h
View file @
51a887bb
...
...
@@ -49,7 +49,8 @@ int dvb_set_dvbs (dvb_device_t *, uint32_t freq, uint32_t srate,
const
char
*
fec
);
int
dvb_set_dvbs2
(
dvb_device_t
*
,
uint32_t
freq
,
const
char
*
mod
,
uint32_t
srate
,
const
char
*
fec
,
int
pilot
,
int
rolloff
);
int
dvb_set_sec
(
dvb_device_t
*
,
char
pol
);
int
dvb_set_sec
(
dvb_device_t
*
,
uint32_t
freq
,
char
pol
,
uint32_t
lowf
,
uint32_t
highf
,
uint32_t
switchf
);
/* DVB-T */
int
dvb_set_dvbt
(
dvb_device_t
*
,
uint32_t
freq
,
const
char
*
mod
,
...
...
modules/access/dtv/linux.c
View file @
51a887bb
...
...
@@ -548,16 +548,68 @@ static unsigned dvb_parse_polarization (char pol)
return
dvb_parse_int
(
pol
,
tab
,
5
,
SEC_VOLTAGE_OFF
);
}
int
dvb_set_sec
(
dvb_device_t
*
d
,
char
pol
)
int
dvb_set_sec
(
dvb_device_t
*
d
,
uint32_t
freq
,
char
pol
,
uint32_t
lowf
,
uint32_t
highf
,
uint32_t
switchf
)
{
/* Always try to configure high voltage, but only warn on enable failure */
int
val
=
var_InheritBool
(
d
->
obj
,
"dvb-high-voltage"
);
if
(
ioctl
(
d
->
frontend
,
FE_ENABLE_HIGH_LNB_VOLTAGE
,
&
val
)
<
0
&&
val
)
msg_Err
(
d
->
obj
,
"cannot enable high LNB voltage: %m"
);
/* Windows BDA exposes a higher-level API covering LNB oscillators.
* So lets pretend this is platform-specific stuff and do it here. */
if
(
!
lowf
)
{
/* Default oscillator frequencies */
static
const
struct
{
uint16_t
min
,
max
,
low
,
high
;
}
tab
[]
=
{
/* min max low high */
{
10700
,
13250
,
9750
,
10600
},
/* Ku band */
{
4500
,
4800
,
5950
,
0
},
/* C band (high) */
{
3400
,
4200
,
5150
,
0
},
/* C band (low) */
{
2500
,
2700
,
3650
,
0
},
/* S band */
{
950
,
2150
,
0
,
0
},
/* adjusted IF (L band) */
};
uint_fast16_t
mhz
=
freq
/
1000
;
for
(
size_t
i
=
0
;
i
<
sizeof
(
tab
)
/
sizeof
(
tab
[
0
]);
i
++
)
if
(
mhz
>=
tab
[
i
].
min
&&
mhz
<=
tab
[
i
].
max
)
{
lowf
=
tab
[
i
].
low
*
1000
;
highf
=
tab
[
i
].
high
*
1000
;
goto
known
;
}
msg_Err
(
d
->
obj
,
"no known band for frequency %u kHz"
,
freq
);
known:
msg_Dbg
(
d
->
obj
,
"selected LNB low: %u kHz, LNB high: %u kHz"
,
lowf
,
highf
);
}
/* Use high oscillator frequency? */
bool
high
=
highf
!=
0
&&
freq
>
switchf
;
freq
-=
high
?
highf
:
lowf
;
if
((
int32_t
)
freq
<
0
)
freq
*=
-
1
;
assert
(
freq
<
0x7fffffff
);
/* TODO: DiSEqC */
/* Continuous tone (to select high oscillator frequency) */
int
tone
;
switch
(
var_InheritInteger
(
d
->
obj
,
"dvb-tone"
))
{
case
0
:
tone
=
SEC_TONE_OFF
;
break
;
case
1
:
tone
=
SEC_TONE_ON
;
break
;
default:
tone
=
high
?
SEC_TONE_ON
:
SEC_TONE_OFF
;
}
unsigned
voltage
=
dvb_parse_polarization
(
pol
);
return
dvb_set_prop
(
d
,
DTV_VOLTAGE
,
voltage
);
return
dvb_set_props
(
d
,
3
,
DTV_FREQUENCY
,
freq
,
DTV_VOLTAGE
,
voltage
,
DTV_TONE
,
tone
);
}
int
dvb_set_dvbs
(
dvb_device_t
*
d
,
uint32_t
freq
,
...
...
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