mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.7.0
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto. Note that the channels.conf file now supports additional parameters, so you may want to make sure you have a backup of this file in case you need to go back to the previous version of VDR! - Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl). - Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard Nissl). - Improved logging system time changes to avoid problems on slow systems under heavy load (suggested by Helmut Auer). - Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf Ahrenberg). - Fixed initializing the timer's flags in the cTimer copy constructor (thanks to Andreas Mair). - Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald). - Increased the time between checking the CAM status to 500ms to avoid problems with some CAMs (reported by Arthur Konovalov).
This commit is contained in:
parent
fa56503b9a
commit
771986b89f
@ -595,6 +595,8 @@ Helmut Auer <vdr@helmutauer.de>
|
||||
not two hex digits after the '#'
|
||||
for suggesting to suppress the automatic shutdown if the remote control is
|
||||
currently disabled
|
||||
for suggesting to improve logging system time changes to avoid problems on slow
|
||||
systems under heavy load
|
||||
|
||||
Jeremy Hall <jhall@UU.NET>
|
||||
for fixing an incomplete initialization of the filter parameters in eit.c
|
||||
@ -958,6 +960,7 @@ Andreas Mair <andreas@vdr-developer.org>
|
||||
for making the SVDRP command LSTC list the channels with group separators if the
|
||||
option ':groups' is given
|
||||
for fixing handling 3 and 4 byte UTF-8 symbols in Utf8CharGet()
|
||||
for fixing initializing the timer's flags in the cTimer copy constructor
|
||||
|
||||
Olivier Jacques <jacquesolivier@hotmail.com>)
|
||||
for translating OSD texts to the French language
|
||||
@ -1050,6 +1053,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
|
||||
language
|
||||
for fixing displaying the free disk space when entering the recordings menu where
|
||||
the last replayed recording was in a subdirectory, and pressing Back
|
||||
for setting the thread name, so that it can be seen in 'top -H'
|
||||
|
||||
Ralf Klueber <ralf.klueber@vodafone.com>
|
||||
for reporting a bug in cutting a recording if there is only a single editing mark
|
||||
@ -1174,6 +1178,8 @@ Reinhard Nissl <rnissl@gmx.de>
|
||||
for reporting an invalid access in the section handler when ending VDR
|
||||
for pointing out that cDevice::Transferring() doesn't return the right value in the
|
||||
early stage of channel switching
|
||||
for fixing displaying transponder data when it is modified
|
||||
for fixing handling the counter in detection of pre 1.3.19 PS data
|
||||
|
||||
Richard Robson <richard_robson@beeb.net>
|
||||
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
||||
@ -1506,6 +1512,7 @@ Arthur Konovalov <kasjas@hot.ee>
|
||||
for translating OSD texts to the Estonian language
|
||||
for fixing a missing ',' in the Greek OSD texts
|
||||
for fixing a missing ',' in the Swedish OSD texts
|
||||
for reporting problems with CAMs when checking the CAM status too frequently
|
||||
|
||||
Milos Kapoun <m.kapoun@cra.cz>
|
||||
for suggesting to skip code table info in SI data
|
||||
@ -1702,6 +1709,7 @@ Wolfgang Rohdewald <wolfgang@rohdewald.de>
|
||||
Channel+ or Channel- is pressed
|
||||
for pointing out a possible problem with asprintf() if the return value is not
|
||||
checked
|
||||
for fixing setting the OSD level in the 'osddemo' example
|
||||
|
||||
Chad Flynt <hoochster@sofnet.com>
|
||||
for suggestions and experiments regarding the buffer reserve in cTransfer
|
||||
|
32
HISTORY
32
HISTORY
@ -5729,3 +5729,35 @@ Video Disk Recorder Revision History
|
||||
- Added Chinese language texts (thanks to Nan Feng).
|
||||
- Updated the Portuguese language texts.
|
||||
- Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
|
||||
|
||||
2008-04-13: Version 1.7.0
|
||||
|
||||
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
|
||||
revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
|
||||
requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
|
||||
Note that the channels.conf file now supports additional parameters, so you may
|
||||
want to make sure you have a backup of this file in case you need to go back to
|
||||
the previous version of VDR!
|
||||
- Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
|
||||
- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
|
||||
Nissl).
|
||||
- Improved logging system time changes to avoid problems on slow systems under
|
||||
heavy load (suggested by Helmut Auer).
|
||||
- Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
|
||||
Ahrenberg).
|
||||
- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
|
||||
Andreas Mair).
|
||||
- Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
|
||||
- Increased the time between checking the CAM status to 500ms to avoid problems
|
||||
with some CAMs (reported by Arthur Konovalov).
|
||||
|
||||
2008-04-13: Version 1.6.0-1
|
||||
|
||||
- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
|
||||
Nissl).
|
||||
- Improved logging system time changes to avoid problems on slow systems under
|
||||
heavy load (suggested by Helmut Auer).
|
||||
- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
|
||||
Andreas Mair).
|
||||
- Increased the time between checking the CAM status to 500ms to avoid problems
|
||||
with some CAMs (reported by Arthur Konovalov).
|
||||
|
@ -6,7 +6,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: Make.config.template 1.16 2008/01/13 12:54:09 kls Exp $
|
||||
# $Id: Make.config.template 2.0 2008/01/13 12:54:09 kls Exp $
|
||||
|
||||
### The C compiler and options:
|
||||
|
||||
|
2
Makefile
2
Makefile
@ -4,7 +4,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: Makefile 1.113 2008/02/29 21:43:03 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/02/29 21:43:03 kls Exp $
|
||||
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.22 2008/01/13 12:59:58 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/13 12:59:58 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: hello.c 1.15 2008/03/18 17:13:25 kls Exp $
|
||||
* $Id: hello.c 2.0 2008/03/18 17:13:25 kls Exp $
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
|
@ -17,3 +17,7 @@ VDR Plugin 'osddemo' Revision History
|
||||
|
||||
- Moved the "all" target in the Makefile before the "Implicit rules",
|
||||
so that a plain "make" will compile everything.
|
||||
|
||||
2008-04-13: Version 0.1.3
|
||||
|
||||
- Fixed setting the OSD level (thanks to Wolfgang Rohdewald).
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.11 2008/01/13 13:00:01 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/13 13:00:01 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
@ -3,12 +3,12 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: osddemo.c 1.4 2007/08/15 13:17:55 kls Exp $
|
||||
* $Id: osddemo.c 2.1 2008/04/13 12:59:57 kls Exp $
|
||||
*/
|
||||
|
||||
#include <vdr/plugin.h>
|
||||
|
||||
static const char *VERSION = "0.1.2";
|
||||
static const char *VERSION = "0.1.3";
|
||||
static const char *DESCRIPTION = "Demo of arbitrary OSD setup";
|
||||
static const char *MAINMENUENTRY = "Osd Demo";
|
||||
|
||||
@ -41,7 +41,7 @@ cLineGame::~cLineGame()
|
||||
|
||||
void cLineGame::Show(void)
|
||||
{
|
||||
osd = cOsdProvider::NewOsd(100, 50);
|
||||
osd = cOsdProvider::NewOsd(100, 50, 50);
|
||||
if (osd) {
|
||||
tArea Area = { 0, 0, 99, 199, 4 };
|
||||
osd->SetAreas(&Area, 1);
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.2 2008/01/13 13:00:04 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/13 13:00:04 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: entry.c 1.3 2008/02/17 13:42:34 kls Exp $
|
||||
* $Id: entry.c 2.0 2008/02/17 13:42:34 kls Exp $
|
||||
*/
|
||||
|
||||
#include "entry.h"
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: entry.h 1.1 2008/01/06 12:30:50 kls Exp $
|
||||
* $Id: entry.h 2.0 2008/01/06 12:30:50 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ENTRY_H
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: menu.c 1.1 2008/01/13 11:35:18 kls Exp $
|
||||
* $Id: menu.c 2.0 2008/01/13 11:35:18 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: menu.h 1.1 2008/01/12 11:22:52 kls Exp $
|
||||
* $Id: menu.h 2.0 2008/01/12 11:22:52 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef _MENU_H
|
||||
|
@ -7,7 +7,7 @@
|
||||
#
|
||||
# See the README file for copyright information and how to reach the author.
|
||||
#
|
||||
# $Id: pic2mpg 1.4 2008/02/29 14:34:22 kls Exp $
|
||||
# $Id: pic2mpg 2.0 2008/02/29 14:34:22 kls Exp $
|
||||
|
||||
## TODO implement HDTV (1920 x 1080)
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: pictures.c 1.7 2008/03/14 12:57:19 kls Exp $
|
||||
* $Id: pictures.c 2.0 2008/03/14 12:57:19 kls Exp $
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: player.c 1.3 2008/02/09 12:13:10 kls Exp $
|
||||
* $Id: player.c 2.0 2008/02/09 12:13:10 kls Exp $
|
||||
*/
|
||||
|
||||
#include "player.h"
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: player.h 1.1 2008/01/12 16:21:57 kls Exp $
|
||||
* $Id: player.h 2.0 2008/01/12 16:21:57 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef _PLAYER_H
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.10 2008/01/13 13:00:07 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/13 13:00:07 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: svccli.c 1.2 2007/08/15 13:18:08 kls Exp $
|
||||
* $Id: svccli.c 2.0 2007/08/15 13:18:08 kls Exp $
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: svcsvr.c 1.2 2007/08/15 13:18:59 kls Exp $
|
||||
* $Id: svcsvr.c 2.0 2007/08/15 13:18:59 kls Exp $
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.15 2008/01/19 11:40:33 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/19 11:40:33 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
0
PLUGINS/src/skincurses/po/it_IT.po
Executable file → Normal file
0
PLUGINS/src/skincurses/po/it_IT.po
Executable file → Normal file
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: skincurses.c 1.23 2008/03/14 12:57:14 kls Exp $
|
||||
* $Id: skincurses.c 2.0 2008/03/14 12:57:14 kls Exp $
|
||||
*/
|
||||
|
||||
#include <ncurses.h>
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.11 2008/01/13 13:00:16 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/13 13:00:16 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
@ -8,7 +8,7 @@
|
||||
#
|
||||
# See the README file for copyright information and how to reach the author.
|
||||
#
|
||||
# $Id: getskyepg.pl 1.7 2008/03/22 10:17:42 kls Exp $
|
||||
# $Id: getskyepg.pl 2.0 2008/03/22 10:17:42 kls Exp $
|
||||
|
||||
use Getopt::Std;
|
||||
use Time::Local;
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: sky.c 1.15 2008/03/22 10:19:32 kls Exp $
|
||||
* $Id: sky.c 2.0 2008/03/22 10:19:32 kls Exp $
|
||||
*/
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.15 2008/01/13 13:00:18 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/13 13:00:18 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: status.c 1.10 2008/02/16 15:41:05 kls Exp $
|
||||
* $Id: status.c 2.0 2008/02/16 15:41:05 kls Exp $
|
||||
*/
|
||||
|
||||
#include <vdr/plugin.h>
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.9 2008/01/13 13:00:20 kls Exp $
|
||||
# $Id: Makefile 2.0 2008/01/13 13:00:20 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: svdrpdemo.c 1.3 2007/08/15 13:19:57 kls Exp $
|
||||
* $Id: svdrpdemo.c 2.0 2007/08/15 13:19:57 kls Exp $
|
||||
*/
|
||||
|
||||
#include <vdr/plugin.h>
|
||||
|
2
audio.c
2
audio.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: audio.c 1.5 2006/05/28 15:03:24 kls Exp $
|
||||
* $Id: audio.c 2.0 2006/05/28 15:03:24 kls Exp $
|
||||
*/
|
||||
|
||||
#include "audio.h"
|
||||
|
2
audio.h
2
audio.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: audio.h 1.3 2005/02/12 12:20:19 kls Exp $
|
||||
* $Id: audio.h 2.0 2005/02/12 12:20:19 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __AUDIO_H
|
||||
|
225
channels.c
225
channels.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: channels.c 1.60 2008/03/05 16:42:50 kls Exp $
|
||||
* $Id: channels.c 2.2 2008/04/12 13:49:12 kls Exp $
|
||||
*/
|
||||
|
||||
#include "channels.h"
|
||||
@ -21,67 +21,114 @@
|
||||
// --- Channel Parameter Maps ------------------------------------------------
|
||||
|
||||
const tChannelParameterMap InversionValues[] = {
|
||||
{ 0, INVERSION_OFF },
|
||||
{ 1, INVERSION_ON },
|
||||
{ 999, INVERSION_AUTO },
|
||||
{ 0, DVBFE_INVERSION_OFF, trNOOP("off") },
|
||||
{ 1, DVBFE_INVERSION_ON, trNOOP("on") },
|
||||
{ 999, DVBFE_INVERSION_AUTO },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap BandwidthValues[] = {
|
||||
{ 6, BANDWIDTH_6_MHZ },
|
||||
{ 7, BANDWIDTH_7_MHZ },
|
||||
{ 8, BANDWIDTH_8_MHZ },
|
||||
{ 999, BANDWIDTH_AUTO },
|
||||
{ 5, DVBFE_BANDWIDTH_5_MHZ, "5 MHz" },
|
||||
{ 6, DVBFE_BANDWIDTH_6_MHZ, "6 MHz" },
|
||||
{ 7, DVBFE_BANDWIDTH_7_MHZ, "7 MHz" },
|
||||
{ 8, DVBFE_BANDWIDTH_8_MHZ, "8 MHz" },
|
||||
{ 999, DVBFE_BANDWIDTH_AUTO },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap CoderateValues[] = {
|
||||
{ 0, FEC_NONE },
|
||||
{ 12, FEC_1_2 },
|
||||
{ 23, FEC_2_3 },
|
||||
{ 34, FEC_3_4 },
|
||||
{ 45, FEC_4_5 },
|
||||
{ 56, FEC_5_6 },
|
||||
{ 67, FEC_6_7 },
|
||||
{ 78, FEC_7_8 },
|
||||
{ 89, FEC_8_9 },
|
||||
{ 999, FEC_AUTO },
|
||||
{ 0, DVBFE_FEC_NONE, trNOOP("none") },
|
||||
{ 12, DVBFE_FEC_1_2, "1/2" },
|
||||
{ 13, DVBFE_FEC_1_3, "1/3" },
|
||||
{ 14, DVBFE_FEC_1_4, "1/4" },
|
||||
{ 23, DVBFE_FEC_2_3, "2/3" },
|
||||
{ 25, DVBFE_FEC_2_5, "2/5" },
|
||||
{ 34, DVBFE_FEC_3_4, "3/4" },
|
||||
{ 35, DVBFE_FEC_3_5, "3/5" },
|
||||
{ 45, DVBFE_FEC_4_5, "4/5" },
|
||||
{ 56, DVBFE_FEC_5_6, "5/6" },
|
||||
{ 67, DVBFE_FEC_6_7, "6/7" },
|
||||
{ 78, DVBFE_FEC_7_8, "7/8" },
|
||||
{ 89, DVBFE_FEC_8_9, "8/9" },
|
||||
{ 910, DVBFE_FEC_9_10, "9/10" },
|
||||
{ 999, DVBFE_FEC_AUTO },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap ModulationValues[] = {
|
||||
{ 0, QPSK },
|
||||
{ 16, QAM_16 },
|
||||
{ 32, QAM_32 },
|
||||
{ 64, QAM_64 },
|
||||
{ 128, QAM_128 },
|
||||
{ 256, QAM_256 },
|
||||
{ 999, QAM_AUTO },
|
||||
{ 0, DVBFE_MOD_NONE, trNOOP("none") },
|
||||
{ 4, DVBFE_MOD_QAM4, "QAM4" },
|
||||
{ 16, DVBFE_MOD_QAM16, "QAM16" },
|
||||
{ 32, DVBFE_MOD_QAM32, "QAM32" },
|
||||
{ 64, DVBFE_MOD_QAM64, "QAM64" },
|
||||
{ 128, DVBFE_MOD_QAM128, "QAM128" },
|
||||
{ 256, DVBFE_MOD_QAM256, "QAM256" },
|
||||
{ 512, DVBFE_MOD_QAM512, "QAM512" },
|
||||
{1024, DVBFE_MOD_QAM1024, "QAM1024" },
|
||||
{ 1, DVBFE_MOD_BPSK, "BPSK" },
|
||||
{ 2, DVBFE_MOD_QPSK, "QPSK" },
|
||||
{ 3, DVBFE_MOD_OQPSK, "OQPSK" },
|
||||
{ 5, DVBFE_MOD_8PSK, "8PSK" },
|
||||
{ 6, DVBFE_MOD_16APSK, "16APSK" },
|
||||
{ 7, DVBFE_MOD_32APSK, "32APSK" },
|
||||
{ 8, DVBFE_MOD_OFDM, "OFDM" },
|
||||
{ 9, DVBFE_MOD_COFDM, "COFDM" },
|
||||
{ 10, DVBFE_MOD_VSB8, "VSB8" },
|
||||
{ 11, DVBFE_MOD_VSB16, "VSB16" },
|
||||
{ 998, DVBFE_MOD_QAMAUTO, "QAMAUTO" },
|
||||
{ 999, DVBFE_MOD_AUTO },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap SystemValues[] = {
|
||||
{ 0, DVBFE_DELSYS_DVBS, "DVB-S" },
|
||||
{ 1, DVBFE_DELSYS_DVBS2, "DVB-S2" },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap TransmissionValues[] = {
|
||||
{ 2, TRANSMISSION_MODE_2K },
|
||||
{ 8, TRANSMISSION_MODE_8K },
|
||||
{ 999, TRANSMISSION_MODE_AUTO },
|
||||
{ 2, DVBFE_TRANSMISSION_MODE_2K, "2K" },
|
||||
{ 4, DVBFE_TRANSMISSION_MODE_4K, "4K" },
|
||||
{ 8, DVBFE_TRANSMISSION_MODE_8K, "8K" },
|
||||
{ 999, DVBFE_TRANSMISSION_MODE_AUTO },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap GuardValues[] = {
|
||||
{ 4, GUARD_INTERVAL_1_4 },
|
||||
{ 8, GUARD_INTERVAL_1_8 },
|
||||
{ 16, GUARD_INTERVAL_1_16 },
|
||||
{ 32, GUARD_INTERVAL_1_32 },
|
||||
{ 999, GUARD_INTERVAL_AUTO },
|
||||
{ 4, DVBFE_GUARD_INTERVAL_1_4, "1/4" },
|
||||
{ 8, DVBFE_GUARD_INTERVAL_1_8, "1/8" },
|
||||
{ 16, DVBFE_GUARD_INTERVAL_1_16, "1/16" },
|
||||
{ 32, DVBFE_GUARD_INTERVAL_1_32, "1/32" },
|
||||
{ 999, DVBFE_GUARD_INTERVAL_AUTO },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap HierarchyValues[] = {
|
||||
{ 0, HIERARCHY_NONE },
|
||||
{ 1, HIERARCHY_1 },
|
||||
{ 2, HIERARCHY_2 },
|
||||
{ 4, HIERARCHY_4 },
|
||||
{ 999, HIERARCHY_AUTO },
|
||||
{ 0, DVBFE_HIERARCHY_OFF, trNOOP("off") },
|
||||
{ 1, DVBFE_HIERARCHY_ON, trNOOP("on") },
|
||||
{ 999, DVBFE_HIERARCHY_AUTO },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap AlphaValues[] = {
|
||||
{ 0, 0 },
|
||||
{ 1, DVBFE_ALPHA_1 },
|
||||
{ 2, DVBFE_ALPHA_2 },
|
||||
{ 4, DVBFE_ALPHA_4 },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap PriorityValues[] = {
|
||||
{ 0, DVBFE_STREAM_PRIORITY_HP, trNOOP("high") },
|
||||
{ 1, DVBFE_STREAM_PRIORITY_LP, trNOOP("low") },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
const tChannelParameterMap RollOffValues[] = {
|
||||
{ 0, DVBFE_ROLLOFF_UNKNOWN },
|
||||
{ 20, DVBFE_ROLLOFF_20, "0.20" },
|
||||
{ 25, DVBFE_ROLLOFF_25, "0.25" },
|
||||
{ 35, DVBFE_ROLLOFF_35, "0.35" },
|
||||
{ -1 }
|
||||
};
|
||||
|
||||
@ -107,11 +154,14 @@ int DriverIndex(int Value, const tChannelParameterMap *Map)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int MapToUser(int Value, const tChannelParameterMap *Map)
|
||||
int MapToUser(int Value, const tChannelParameterMap *Map, const char **String)
|
||||
{
|
||||
int n = DriverIndex(Value, Map);
|
||||
if (n >= 0)
|
||||
if (n >= 0) {
|
||||
if (String)
|
||||
*String = tr(Map[n].userString);
|
||||
return Map[n].userValue;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -167,14 +217,18 @@ cChannel::cChannel(void)
|
||||
provider = strdup("");
|
||||
portalName = strdup("");
|
||||
memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__);
|
||||
inversion = INVERSION_AUTO;
|
||||
bandwidth = BANDWIDTH_AUTO;
|
||||
coderateH = FEC_AUTO;
|
||||
coderateL = FEC_AUTO;
|
||||
modulation = QAM_AUTO;
|
||||
transmission = TRANSMISSION_MODE_AUTO;
|
||||
guard = GUARD_INTERVAL_AUTO;
|
||||
hierarchy = HIERARCHY_AUTO;
|
||||
inversion = DVBFE_INVERSION_AUTO;
|
||||
bandwidth = DVBFE_BANDWIDTH_AUTO;
|
||||
coderateH = DVBFE_FEC_AUTO;
|
||||
coderateL = DVBFE_FEC_AUTO;
|
||||
modulation = DVBFE_MOD_AUTO;
|
||||
system = DVBFE_DELSYS_DVBS;
|
||||
transmission = DVBFE_TRANSMISSION_MODE_AUTO;
|
||||
guard = DVBFE_GUARD_INTERVAL_AUTO;
|
||||
hierarchy = DVBFE_HIERARCHY_AUTO;
|
||||
alpha = 0;
|
||||
priority = DVBFE_STREAM_PRIORITY_HP;
|
||||
rollOff = DVBFE_ROLLOFF_UNKNOWN;
|
||||
modification = CHANNELMOD_NONE;
|
||||
schedule = NULL;
|
||||
linkChannels = NULL;
|
||||
@ -277,13 +331,17 @@ void cChannel::CopyTransponderData(const cChannel *Channel)
|
||||
coderateH = Channel->coderateH;
|
||||
coderateL = Channel->coderateL;
|
||||
modulation = Channel->modulation;
|
||||
system = Channel->system;
|
||||
transmission = Channel->transmission;
|
||||
guard = Channel->guard;
|
||||
hierarchy = Channel->hierarchy;
|
||||
alpha = Channel->alpha;
|
||||
priority = Channel->priority;
|
||||
rollOff = Channel->rollOff;
|
||||
}
|
||||
}
|
||||
|
||||
bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH)
|
||||
bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff)
|
||||
{
|
||||
// Workarounds for broadcaster stupidity:
|
||||
// Some providers broadcast the transponder frequency of their channels with two different
|
||||
@ -297,19 +355,22 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
|
||||
if (abs(srate - Srate) <= 1)
|
||||
Srate = srate;
|
||||
|
||||
if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH) {
|
||||
if (Number()) {
|
||||
dsyslog("changing transponder data of channel %d from %s:%d:%c:%d:%d to %s:%d:%c:%d:%d", Number(), *cSource::ToString(source), frequency, polarization, srate, coderateH, *cSource::ToString(Source), Frequency, Polarization, Srate, CoderateH);
|
||||
modification |= CHANNELMOD_TRANSP;
|
||||
Channels.SetModified();
|
||||
}
|
||||
if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH || modulation != Modulation || system != System || rollOff != RollOff) {
|
||||
cString OldTransponderData = TransponderDataToString();
|
||||
source = Source;
|
||||
frequency = Frequency;
|
||||
polarization = Polarization;
|
||||
srate = Srate;
|
||||
coderateH = CoderateH;
|
||||
modulation = QPSK;
|
||||
modulation = Modulation;
|
||||
system = System;
|
||||
rollOff = RollOff;
|
||||
schedule = NULL;
|
||||
if (Number()) {
|
||||
dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
|
||||
modification |= CHANNELMOD_TRANSP;
|
||||
Channels.SetModified();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -317,29 +378,26 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
|
||||
bool cChannel::SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH)
|
||||
{
|
||||
if (source != Source || frequency != Frequency || modulation != Modulation || srate != Srate || coderateH != CoderateH) {
|
||||
if (Number()) {
|
||||
dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d to %s:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, modulation, srate, coderateH, *cSource::ToString(Source), Frequency, Modulation, Srate, CoderateH);
|
||||
modification |= CHANNELMOD_TRANSP;
|
||||
Channels.SetModified();
|
||||
}
|
||||
cString OldTransponderData = TransponderDataToString();
|
||||
source = Source;
|
||||
frequency = Frequency;
|
||||
modulation = Modulation;
|
||||
srate = Srate;
|
||||
coderateH = CoderateH;
|
||||
schedule = NULL;
|
||||
if (Number()) {
|
||||
dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
|
||||
modification |= CHANNELMOD_TRANSP;
|
||||
Channels.SetModified();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission)
|
||||
bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission, int Alpha, int Priority)
|
||||
{
|
||||
if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission) {
|
||||
if (Number()) {
|
||||
dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d:%d:%d:%d:%d to %s:%d:%d:%d:%d:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, bandwidth, modulation, hierarchy, coderateH, coderateL, guard, transmission, *cSource::ToString(Source), Frequency, Bandwidth, Modulation, Hierarchy, CoderateH, CoderateL, Guard, Transmission);
|
||||
modification |= CHANNELMOD_TRANSP;
|
||||
Channels.SetModified();
|
||||
}
|
||||
if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission || alpha != Alpha || priority != Priority) {
|
||||
cString OldTransponderData = TransponderDataToString();
|
||||
source = Source;
|
||||
frequency = Frequency;
|
||||
bandwidth = Bandwidth;
|
||||
@ -349,7 +407,14 @@ bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth,
|
||||
coderateL = CoderateL;
|
||||
guard = Guard;
|
||||
transmission = Transmission;
|
||||
alpha = Alpha;
|
||||
priority = Priority;
|
||||
schedule = NULL;
|
||||
if (Number()) {
|
||||
dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
|
||||
modification |= CHANNELMOD_TRANSP;
|
||||
Channels.SetModified();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -587,6 +652,13 @@ static int PrintParameter(char *p, char Name, int Value)
|
||||
return Value >= 0 && Value != 999 ? sprintf(p, "%c%d", Name, Value) : 0;
|
||||
}
|
||||
|
||||
cString cChannel::TransponderDataToString(void) const
|
||||
{
|
||||
if (cSource::IsTerr(source))
|
||||
return cString::sprintf("%d:%s:%s", frequency, *ParametersToString(), *cSource::ToString(source));
|
||||
return cString::sprintf("%d:%s:%s:%d", frequency, *ParametersToString(), *cSource::ToString(source), srate);
|
||||
}
|
||||
|
||||
cString cChannel::ParametersToString(void) const
|
||||
{
|
||||
char type = **cSource::ToString(source);
|
||||
@ -597,13 +669,17 @@ cString cChannel::ParametersToString(void) const
|
||||
char *q = buffer;
|
||||
*q = 0;
|
||||
ST(" S ") q += sprintf(q, "%c", polarization);
|
||||
ST("CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
|
||||
ST(" T") q += PrintParameter(q, 'A', MapToUser(alpha, AlphaValues));
|
||||
ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
|
||||
ST("CST") q += PrintParameter(q, 'C', MapToUser(coderateH, CoderateValues));
|
||||
ST(" T") q += PrintParameter(q, 'D', MapToUser(coderateL, CoderateValues));
|
||||
ST("C T") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
|
||||
ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
|
||||
ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
|
||||
ST(" T") q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
|
||||
ST("CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
|
||||
ST("CST") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
|
||||
ST(" S ") q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
|
||||
ST(" T") q += PrintParameter(q, 'P', MapToUser(priority, PriorityValues));
|
||||
ST(" S ") q += PrintParameter(q, 'S', MapToUser(system, SystemValues));
|
||||
ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
|
||||
ST(" T") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
|
||||
return buffer;
|
||||
}
|
||||
@ -628,6 +704,7 @@ bool cChannel::StringToParameters(const char *s)
|
||||
{
|
||||
while (s && *s) {
|
||||
switch (toupper(*s)) {
|
||||
case 'A': s = ParseParameter(s, alpha, AlphaValues); break;
|
||||
case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
|
||||
case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
|
||||
case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
|
||||
@ -636,7 +713,11 @@ bool cChannel::StringToParameters(const char *s)
|
||||
case 'I': s = ParseParameter(s, inversion, InversionValues); break;
|
||||
case 'L': polarization = *s++; break;
|
||||
case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
|
||||
case 'Z':// for compatibility with the original DVB-S2 patch - may be removed in future versions
|
||||
case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
|
||||
case 'P': s = ParseParameter(s, priority, PriorityValues); break;
|
||||
case 'R': polarization = *s++; break;
|
||||
case 'S': s = ParseParameter(s, system, SystemValues); break;
|
||||
case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
|
||||
case 'V': polarization = *s++; break;
|
||||
case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;
|
||||
|
23
channels.h
23
channels.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: channels.h 1.47 2008/02/08 13:48:31 kls Exp $
|
||||
* $Id: channels.h 2.2 2008/04/12 13:46:50 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CHANNELS_H
|
||||
@ -50,10 +50,10 @@
|
||||
struct tChannelParameterMap {
|
||||
int userValue;
|
||||
int driverValue;
|
||||
const char *userString;
|
||||
};
|
||||
|
||||
//XXX into cChannel???
|
||||
int MapToUser(int Value, const tChannelParameterMap *Map);
|
||||
int MapToUser(int Value, const tChannelParameterMap *Map, const char **String = NULL);
|
||||
int MapToDriver(int Value, const tChannelParameterMap *Map);
|
||||
int UserIndex(int Value, const tChannelParameterMap *Map);
|
||||
int DriverIndex(int Value, const tChannelParameterMap *Map);
|
||||
@ -62,9 +62,13 @@ extern const tChannelParameterMap InversionValues[];
|
||||
extern const tChannelParameterMap BandwidthValues[];
|
||||
extern const tChannelParameterMap CoderateValues[];
|
||||
extern const tChannelParameterMap ModulationValues[];
|
||||
extern const tChannelParameterMap SystemValues[];
|
||||
extern const tChannelParameterMap TransmissionValues[];
|
||||
extern const tChannelParameterMap GuardValues[];
|
||||
extern const tChannelParameterMap HierarchyValues[];
|
||||
extern const tChannelParameterMap AlphaValues[];
|
||||
extern const tChannelParameterMap PriorityValues[];
|
||||
extern const tChannelParameterMap RollOffValues[];
|
||||
|
||||
struct tChannelID {
|
||||
private:
|
||||
@ -140,14 +144,19 @@ private:
|
||||
int coderateH;
|
||||
int coderateL;
|
||||
int modulation;
|
||||
int system;
|
||||
int transmission;
|
||||
int guard;
|
||||
int hierarchy;
|
||||
int alpha;
|
||||
int priority;
|
||||
int rollOff;
|
||||
int __EndData__;
|
||||
int modification;
|
||||
mutable const cSchedule *schedule;
|
||||
cLinkChannels *linkChannels;
|
||||
cChannel *refChannel;
|
||||
cString TransponderDataToString(void) const;
|
||||
cString ParametersToString(void) const;
|
||||
bool StringToParameters(const char *s);
|
||||
public:
|
||||
@ -194,9 +203,13 @@ public:
|
||||
int CoderateH(void) const { return coderateH; }
|
||||
int CoderateL(void) const { return coderateL; }
|
||||
int Modulation(void) const { return modulation; }
|
||||
int System(void) const { return system; }
|
||||
int Transmission(void) const { return transmission; }
|
||||
int Guard(void) const { return guard; }
|
||||
int Hierarchy(void) const { return hierarchy; }
|
||||
int Alpha(void) const { return alpha; }
|
||||
int Priority(void) const { return priority; }
|
||||
int RollOff(void) const { return rollOff; }
|
||||
const cLinkChannels* LinkChannels(void) const { return linkChannels; }
|
||||
const cChannel *RefChannel(void) const { return refChannel; }
|
||||
bool IsCable(void) const { return cSource::IsCable(source); }
|
||||
@ -206,9 +219,9 @@ public:
|
||||
bool HasTimer(void) const;
|
||||
int Modification(int Mask = CHANNELMOD_ALL);
|
||||
void CopyTransponderData(const cChannel *Channel);
|
||||
bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH);
|
||||
bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff);
|
||||
bool SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH);
|
||||
bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission);
|
||||
bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission, int Alpha, int Priority);
|
||||
void SetId(int Nid, int Tid, int Sid, int Rid = 0);
|
||||
void SetName(const char *Name, const char *ShortName, const char *Provider);
|
||||
void SetPortalName(const char *PortalName);
|
||||
|
4
ci.c
4
ci.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: ci.c 1.48 2007/04/30 13:02:49 kls Exp $
|
||||
* $Id: ci.c 2.1 2008/04/13 13:28:52 kls Exp $
|
||||
*/
|
||||
|
||||
#include "ci.h"
|
||||
@ -1525,7 +1525,7 @@ void cCiAdapter::Action(void)
|
||||
|
||||
cCamSlots CamSlots;
|
||||
|
||||
#define MODULE_CHECK_INTERVAL 100 // ms
|
||||
#define MODULE_CHECK_INTERVAL 500 // ms
|
||||
#define MODULE_RESET_TIMEOUT 2 // s
|
||||
|
||||
cCamSlot::cCamSlot(cCiAdapter *CiAdapter)
|
||||
|
2
ci.h
2
ci.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: ci.h 1.23 2007/01/03 12:49:10 kls Exp $
|
||||
* $Id: ci.h 2.0 2007/01/03 12:49:10 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CI_H
|
||||
|
2
config.c
2
config.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.c 1.161 2008/02/17 13:39:00 kls Exp $
|
||||
* $Id: config.c 2.0 2008/02/17 13:39:00 kls Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
10
config.h
10
config.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.h 1.310 2008/03/23 10:26:10 kls Exp $
|
||||
* $Id: config.h 2.1 2008/04/12 13:02:10 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
@ -22,13 +22,13 @@
|
||||
|
||||
// VDR's own version number:
|
||||
|
||||
#define VDRVERSION "1.6.0"
|
||||
#define VDRVERSNUM 10600 // Version * 10000 + Major * 100 + Minor
|
||||
#define VDRVERSION "1.7.0"
|
||||
#define VDRVERSNUM 10700 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
// The plugin API's version number:
|
||||
|
||||
#define APIVERSION "1.6.0"
|
||||
#define APIVERSNUM 10600 // Version * 10000 + Major * 100 + Minor
|
||||
#define APIVERSION "1.7.0"
|
||||
#define APIVERSNUM 10700 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
// When loading plugins, VDR searches them by their APIVERSION, which
|
||||
// may be smaller than VDRVERSION in case there have been no changes to
|
||||
|
2
cutter.c
2
cutter.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: cutter.c 1.18 2008/01/13 12:22:21 kls Exp $
|
||||
* $Id: cutter.c 2.0 2008/01/13 12:22:21 kls Exp $
|
||||
*/
|
||||
|
||||
#include "cutter.h"
|
||||
|
2
cutter.h
2
cutter.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: cutter.h 1.1 2002/06/22 10:03:15 kls Exp $
|
||||
* $Id: cutter.h 2.0 2002/06/22 10:03:15 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CUTTER_H
|
||||
|
28
device.c
28
device.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: device.c 1.157 2008/03/09 10:03:34 kls Exp $
|
||||
* $Id: device.c 2.2 2008/04/12 14:12:14 kls Exp $
|
||||
*/
|
||||
|
||||
#include "device.h"
|
||||
@ -355,6 +355,21 @@ cDevice *cDevice::GetDevice(int Index)
|
||||
return (0 <= Index && Index < numDevices) ? device[Index] : NULL;
|
||||
}
|
||||
|
||||
static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
|
||||
{
|
||||
int MaxNumProvidedSystems = 1 << AvailableBits;
|
||||
int NumProvidedSystems = Device->NumProvidedSystems();
|
||||
if (NumProvidedSystems > MaxNumProvidedSystems) {
|
||||
esyslog("ERROR: device %d supports %d modulation systems but cDevice::GetDevice() currently only supports %d delivery systems which should be fixed", Device->CardIndex() + 1, NumProvidedSystems, MaxNumProvidedSystems);
|
||||
NumProvidedSystems = MaxNumProvidedSystems;
|
||||
}
|
||||
else if (NumProvidedSystems <= 0) {
|
||||
esyslog("ERROR: device %d reported an invalid number (%d) of supported delivery systems - assuming 1", Device->CardIndex() + 1, NumProvidedSystems);
|
||||
NumProvidedSystems = 1;
|
||||
}
|
||||
return NumProvidedSystems;
|
||||
}
|
||||
|
||||
cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView)
|
||||
{
|
||||
cDevice *AvoidDevice = avoidDevice;
|
||||
@ -408,6 +423,7 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
|
||||
imp <<= 1; imp |= LiveView ? !device[i]->IsPrimaryDevice() || ndr : 0; // prefer the primary device for live viewing if we don't need to detach existing receivers
|
||||
imp <<= 1; imp |= !device[i]->Receiving() && (device[i] != cTransferControl::ReceiverDevice() || device[i]->IsPrimaryDevice()) || ndr; // use receiving devices if we don't need to detach existing receivers, but avoid primary device in local transfer mode
|
||||
imp <<= 1; imp |= device[i]->Receiving(); // avoid devices that are receiving
|
||||
imp <<= 2; imp |= GetClippedNumProvidedSystems(2, device[i]) - 1; // avoid cards which support multiple delivery systems
|
||||
imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device
|
||||
imp <<= 8; imp |= min(max(device[i]->Priority() + MAXPRIORITY, 0), 0xFF); // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
|
||||
imp <<= 8; imp |= min(max((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF); // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
|
||||
@ -712,6 +728,11 @@ bool cDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Needs
|
||||
return false;
|
||||
}
|
||||
|
||||
int cDevice::NumProvidedSystems(void) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool cDevice::IsTunedToTransponder(const cChannel *Channel)
|
||||
{
|
||||
return false;
|
||||
@ -1273,7 +1294,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
|
||||
uchar SubStreamIndex = SubStreamId & 0x1F;
|
||||
|
||||
// Compatibility mode for old VDR recordings, where 0xBD was only AC3:
|
||||
pre_1_3_19_PrivateStreamDeteced:
|
||||
pre_1_3_19_PrivateStreamDetected:
|
||||
if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
|
||||
SubStreamId = c;
|
||||
SubStreamType = 0x80;
|
||||
@ -1314,7 +1335,8 @@ pre_1_3_19_PrivateStreamDeteced:
|
||||
if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
|
||||
dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode - substream id = %02X", SubStreamId);
|
||||
ClrAvailableTracks();
|
||||
goto pre_1_3_19_PrivateStreamDeteced;
|
||||
pre_1_3_19_PrivateStream = MIN_PRE_1_3_19_PRIVATESTREAM + 1;
|
||||
goto pre_1_3_19_PrivateStreamDetected;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
8
device.h
8
device.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: device.h 1.91 2008/02/23 13:13:04 kls Exp $
|
||||
* $Id: device.h 2.1 2008/04/12 11:11:23 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DEVICE_H
|
||||
@ -228,6 +228,12 @@ public:
|
||||
///< function itself actually returns true.
|
||||
///< The default implementation always returns false, so a derived cDevice
|
||||
///< class that can provide channels must implement this function.
|
||||
virtual int NumProvidedSystems(void) const;
|
||||
///< Returns the number of individual "delivery systems" this device provides.
|
||||
///< The default implementation returns 0, so any derived class that can
|
||||
///< actually provide channels must implement this function.
|
||||
///< The result of this function is used when selecting a device, in order
|
||||
///< to avoid devices that provide more than one system.
|
||||
virtual bool IsTunedToTransponder(const cChannel *Channel);
|
||||
///< Returns true if this device is currently tuned to the given Channel's
|
||||
///< transponder.
|
||||
|
2
diseqc.c
2
diseqc.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: diseqc.c 1.6 2008/02/10 14:09:27 kls Exp $
|
||||
* $Id: diseqc.c 2.0 2008/02/10 14:09:27 kls Exp $
|
||||
*/
|
||||
|
||||
#include "diseqc.h"
|
||||
|
2
diseqc.h
2
diseqc.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: diseqc.h 1.2 2002/12/07 13:54:02 kls Exp $
|
||||
* $Id: diseqc.h 2.0 2002/12/07 13:54:02 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DISEQC_H
|
||||
|
2
dvbci.c
2
dvbci.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbci.c 1.1 2007/01/04 12:49:10 kls Exp $
|
||||
* $Id: dvbci.c 2.0 2007/01/04 12:49:10 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbci.h"
|
||||
|
2
dvbci.h
2
dvbci.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbci.h 1.1 2006/11/26 11:19:42 kls Exp $
|
||||
* $Id: dvbci.h 2.0 2006/11/26 11:19:42 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBCI_H
|
||||
|
293
dvbdevice.c
293
dvbdevice.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbdevice.c 1.170 2008/02/09 16:11:44 kls Exp $
|
||||
* $Id: dvbdevice.c 2.2 2008/04/13 14:15:35 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbdevice.h"
|
||||
@ -76,7 +76,7 @@ private:
|
||||
int tuneTimeout;
|
||||
int lockTimeout;
|
||||
time_t lastTimeoutReport;
|
||||
fe_type_t frontendType;
|
||||
dvbfe_delsys frontendType;
|
||||
cChannel channel;
|
||||
const char *diseqcCommands;
|
||||
eTunerStatus tunerStatus;
|
||||
@ -87,14 +87,14 @@ private:
|
||||
bool SetFrontend(void);
|
||||
virtual void Action(void);
|
||||
public:
|
||||
cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType);
|
||||
cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType);
|
||||
virtual ~cDvbTuner();
|
||||
bool IsTunedTo(const cChannel *Channel) const;
|
||||
void Set(const cChannel *Channel, bool Tune);
|
||||
bool Locked(int TimeoutMs = 0);
|
||||
};
|
||||
|
||||
cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType)
|
||||
cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType)
|
||||
{
|
||||
fd_frontend = Fd_Frontend;
|
||||
cardIndex = CardIndex;
|
||||
@ -104,7 +104,7 @@ cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType)
|
||||
lastTimeoutReport = 0;
|
||||
diseqcCommands = NULL;
|
||||
tunerStatus = tsIdle;
|
||||
if (frontendType == FE_QPSK)
|
||||
if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
|
||||
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // must explicitly turn on LNB power
|
||||
SetDescription("tuner on device %d", cardIndex + 1);
|
||||
Start();
|
||||
@ -120,7 +120,26 @@ cDvbTuner::~cDvbTuner()
|
||||
|
||||
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
||||
{
|
||||
return tunerStatus != tsIdle && channel.Source() == Channel->Source() && channel.Transponder() == Channel->Transponder();
|
||||
if (tunerStatus == tsIdle)
|
||||
return false; // not tuned to
|
||||
if (channel.Source() != Channel->Source() || channel.Transponder() != Channel->Transponder())
|
||||
return false; // sufficient mismatch
|
||||
char Type = **cSource::ToString(Channel->Source());
|
||||
#define ST(s, p) if (strchr(s, Type)) if (channel.p() != Channel->p()) return false;
|
||||
// Polarization is already checked as part of the Transponder.
|
||||
ST(" T", Alpha);
|
||||
ST(" T", Bandwidth);
|
||||
ST("CST", CoderateH);
|
||||
ST(" T", CoderateL);
|
||||
ST(" T", Guard);
|
||||
ST("CST", Inversion);
|
||||
ST("CST", Modulation);
|
||||
ST(" S ", RollOff);
|
||||
ST(" T", Priority);
|
||||
ST(" S ", System);
|
||||
ST(" T", Transmission);
|
||||
ST(" T", Hierarchy);
|
||||
return true;
|
||||
}
|
||||
|
||||
void cDvbTuner::Set(const cChannel *Channel, bool Tune)
|
||||
@ -173,114 +192,126 @@ static unsigned int FrequencyToHz(unsigned int f)
|
||||
|
||||
bool cDvbTuner::SetFrontend(void)
|
||||
{
|
||||
dvb_frontend_parameters Frontend;
|
||||
|
||||
dvbfe_params Frontend;
|
||||
memset(&Frontend, 0, sizeof(Frontend));
|
||||
|
||||
switch (frontendType) {
|
||||
case FE_QPSK: { // DVB-S
|
||||
|
||||
unsigned int frequency = channel.Frequency();
|
||||
|
||||
if (Setup.DiSEqC) {
|
||||
cDiseqc *diseqc = Diseqcs.Get(channel.Source(), channel.Frequency(), channel.Polarization());
|
||||
if (diseqc) {
|
||||
if (diseqc->Commands() && (!diseqcCommands || strcmp(diseqcCommands, diseqc->Commands()) != 0)) {
|
||||
cDiseqc::eDiseqcActions da;
|
||||
for (char *CurrentAction = NULL; (da = diseqc->Execute(&CurrentAction)) != cDiseqc::daNone; ) {
|
||||
switch (da) {
|
||||
case cDiseqc::daNone: break;
|
||||
case cDiseqc::daToneOff: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF)); break;
|
||||
case cDiseqc::daToneOn: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_ON)); break;
|
||||
case cDiseqc::daVoltage13: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); break;
|
||||
case cDiseqc::daVoltage18: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18)); break;
|
||||
case cDiseqc::daMiniA: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A)); break;
|
||||
case cDiseqc::daMiniB: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_B)); break;
|
||||
case cDiseqc::daCodes: {
|
||||
int n = 0;
|
||||
uchar *codes = diseqc->Codes(n);
|
||||
if (codes) {
|
||||
struct dvb_diseqc_master_cmd cmd;
|
||||
memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
|
||||
cmd.msg_len = n;
|
||||
CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
diseqcCommands = diseqc->Commands();
|
||||
if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2)) {
|
||||
unsigned int frequency = channel.Frequency();
|
||||
if (Setup.DiSEqC) {
|
||||
cDiseqc *diseqc = Diseqcs.Get(channel.Source(), channel.Frequency(), channel.Polarization());
|
||||
if (diseqc) {
|
||||
if (diseqc->Commands() && (!diseqcCommands || strcmp(diseqcCommands, diseqc->Commands()) != 0)) {
|
||||
cDiseqc::eDiseqcActions da;
|
||||
for (char *CurrentAction = NULL; (da = diseqc->Execute(&CurrentAction)) != cDiseqc::daNone; ) {
|
||||
switch (da) {
|
||||
case cDiseqc::daNone: break;
|
||||
case cDiseqc::daToneOff: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF)); break;
|
||||
case cDiseqc::daToneOn: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_ON)); break;
|
||||
case cDiseqc::daVoltage13: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); break;
|
||||
case cDiseqc::daVoltage18: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18)); break;
|
||||
case cDiseqc::daMiniA: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A)); break;
|
||||
case cDiseqc::daMiniB: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_B)); break;
|
||||
case cDiseqc::daCodes: {
|
||||
int n = 0;
|
||||
uchar *codes = diseqc->Codes(n);
|
||||
if (codes) {
|
||||
struct dvb_diseqc_master_cmd cmd;
|
||||
memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
|
||||
cmd.msg_len = n;
|
||||
CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
frequency -= diseqc->Lof();
|
||||
}
|
||||
else {
|
||||
esyslog("ERROR: no DiSEqC parameters found for channel %d", channel.Number());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
int tone = SEC_TONE_OFF;
|
||||
diseqcCommands = diseqc->Commands();
|
||||
}
|
||||
frequency -= diseqc->Lof();
|
||||
}
|
||||
else {
|
||||
esyslog("ERROR: no DiSEqC parameters found for channel %d", channel.Number());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
int tone = SEC_TONE_OFF;
|
||||
if (frequency < (unsigned int)Setup.LnbSLOF) {
|
||||
frequency -= Setup.LnbFrequLo;
|
||||
tone = SEC_TONE_OFF;
|
||||
}
|
||||
else {
|
||||
frequency -= Setup.LnbFrequHi;
|
||||
tone = SEC_TONE_ON;
|
||||
}
|
||||
int volt = (channel.Polarization() == 'v' || channel.Polarization() == 'V' || channel.Polarization() == 'r' || channel.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
|
||||
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
|
||||
CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
|
||||
}
|
||||
frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF
|
||||
|
||||
if (frequency < (unsigned int)Setup.LnbSLOF) {
|
||||
frequency -= Setup.LnbFrequLo;
|
||||
tone = SEC_TONE_OFF;
|
||||
}
|
||||
else {
|
||||
frequency -= Setup.LnbFrequHi;
|
||||
tone = SEC_TONE_ON;
|
||||
}
|
||||
int volt = (channel.Polarization() == 'v' || channel.Polarization() == 'V' || channel.Polarization() == 'r' || channel.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
|
||||
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
|
||||
CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
|
||||
}
|
||||
Frontend.delivery = dvbfe_delsys(channel.System());
|
||||
Frontend.frequency = frequency * 1000UL;
|
||||
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
|
||||
if (Frontend.delivery == DVBFE_DELSYS_DVBS) {
|
||||
Frontend.delsys.dvbs.modulation = dvbfe_modulation(channel.Modulation());
|
||||
Frontend.delsys.dvbs.symbol_rate = channel.Srate() * 1000UL;
|
||||
Frontend.delsys.dvbs.fec = dvbfe_fec(channel.CoderateH());
|
||||
}
|
||||
else {
|
||||
Frontend.delsys.dvbs2.modulation = dvbfe_modulation(channel.Modulation());
|
||||
Frontend.delsys.dvbs2.symbol_rate = channel.Srate() * 1000UL;
|
||||
Frontend.delsys.dvbs2.fec = dvbfe_fec(channel.CoderateH());
|
||||
Frontend.delsys.dvbs2.rolloff = dvbfe_rolloff(channel.RollOff());
|
||||
}
|
||||
|
||||
frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF
|
||||
Frontend.frequency = frequency * 1000UL;
|
||||
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
|
||||
Frontend.u.qpsk.symbol_rate = channel.Srate() * 1000UL;
|
||||
Frontend.u.qpsk.fec_inner = fe_code_rate_t(channel.CoderateH());
|
||||
tuneTimeout = DVBS_TUNE_TIMEOUT;
|
||||
lockTimeout = DVBS_LOCK_TIMEOUT;
|
||||
|
||||
tuneTimeout = DVBS_TUNE_TIMEOUT;
|
||||
lockTimeout = DVBS_LOCK_TIMEOUT;
|
||||
}
|
||||
break;
|
||||
case FE_QAM: { // DVB-C
|
||||
dvbfe_info feinfo;
|
||||
feinfo.delivery = Frontend.delivery;
|
||||
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
|
||||
}
|
||||
else if (frontendType & DVBFE_DELSYS_DVBC) {
|
||||
Frontend.delivery = DVBFE_DELSYS_DVBC;
|
||||
Frontend.frequency = FrequencyToHz(channel.Frequency());
|
||||
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
|
||||
Frontend.delsys.dvbc.symbol_rate = channel.Srate() * 1000UL;
|
||||
Frontend.delsys.dvbc.fec = dvbfe_fec(channel.CoderateH());
|
||||
Frontend.delsys.dvbc.modulation = dvbfe_modulation(channel.Modulation());
|
||||
|
||||
// Frequency and symbol rate:
|
||||
tuneTimeout = DVBC_TUNE_TIMEOUT;
|
||||
lockTimeout = DVBC_LOCK_TIMEOUT;
|
||||
|
||||
Frontend.frequency = FrequencyToHz(channel.Frequency());
|
||||
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
|
||||
Frontend.u.qam.symbol_rate = channel.Srate() * 1000UL;
|
||||
Frontend.u.qam.fec_inner = fe_code_rate_t(channel.CoderateH());
|
||||
Frontend.u.qam.modulation = fe_modulation_t(channel.Modulation());
|
||||
dvbfe_info feinfo;
|
||||
feinfo.delivery = Frontend.delivery;
|
||||
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
|
||||
}
|
||||
else if (frontendType & DVBFE_DELSYS_DVBT) {
|
||||
Frontend.delivery = DVBFE_DELSYS_DVBT;
|
||||
Frontend.frequency = FrequencyToHz(channel.Frequency());
|
||||
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
|
||||
Frontend.delsys.dvbt.bandwidth = dvbfe_bandwidth(channel.Bandwidth());
|
||||
Frontend.delsys.dvbt.code_rate_HP = dvbfe_fec(channel.CoderateH());
|
||||
Frontend.delsys.dvbt.code_rate_LP = dvbfe_fec(channel.CoderateL());
|
||||
Frontend.delsys.dvbt.constellation = dvbfe_modulation(channel.Modulation());
|
||||
Frontend.delsys.dvbt.transmission_mode = dvbfe_transmission_mode(channel.Transmission());
|
||||
Frontend.delsys.dvbt.guard_interval = dvbfe_guard_interval(channel.Guard());
|
||||
Frontend.delsys.dvbt.hierarchy = dvbfe_hierarchy(channel.Hierarchy());
|
||||
Frontend.delsys.dvbt.alpha = dvbfe_alpha(channel.Alpha());
|
||||
Frontend.delsys.dvbt.priority = dvbfe_stream_priority(channel.Priority());
|
||||
|
||||
tuneTimeout = DVBC_TUNE_TIMEOUT;
|
||||
lockTimeout = DVBC_LOCK_TIMEOUT;
|
||||
}
|
||||
break;
|
||||
case FE_OFDM: { // DVB-T
|
||||
tuneTimeout = DVBT_TUNE_TIMEOUT;
|
||||
lockTimeout = DVBT_LOCK_TIMEOUT;
|
||||
|
||||
// Frequency and OFDM paramaters:
|
||||
|
||||
Frontend.frequency = FrequencyToHz(channel.Frequency());
|
||||
Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
|
||||
Frontend.u.ofdm.bandwidth = fe_bandwidth_t(channel.Bandwidth());
|
||||
Frontend.u.ofdm.code_rate_HP = fe_code_rate_t(channel.CoderateH());
|
||||
Frontend.u.ofdm.code_rate_LP = fe_code_rate_t(channel.CoderateL());
|
||||
Frontend.u.ofdm.constellation = fe_modulation_t(channel.Modulation());
|
||||
Frontend.u.ofdm.transmission_mode = fe_transmit_mode_t(channel.Transmission());
|
||||
Frontend.u.ofdm.guard_interval = fe_guard_interval_t(channel.Guard());
|
||||
Frontend.u.ofdm.hierarchy_information = fe_hierarchy_t(channel.Hierarchy());
|
||||
|
||||
tuneTimeout = DVBT_TUNE_TIMEOUT;
|
||||
lockTimeout = DVBT_LOCK_TIMEOUT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
|
||||
return false;
|
||||
}
|
||||
if (ioctl(fd_frontend, FE_SET_FRONTEND, &Frontend) < 0) {
|
||||
dvbfe_info feinfo;
|
||||
feinfo.delivery = Frontend.delivery;
|
||||
CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
|
||||
}
|
||||
else {
|
||||
esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
|
||||
return false;
|
||||
}
|
||||
if (ioctl(fd_frontend, DVBFE_SET_PARAMS, &Frontend) < 0) {
|
||||
esyslog("ERROR: frontend %d: %m", cardIndex);
|
||||
return false;
|
||||
}
|
||||
@ -351,11 +382,23 @@ void cDvbTuner::Action(void)
|
||||
int cDvbDevice::devVideoOffset = -1;
|
||||
int cDvbDevice::setTransferModeForDolbyDigital = 1;
|
||||
|
||||
const char *DeliverySystems[] = {
|
||||
"DVBS",
|
||||
"DSS",
|
||||
"DVBS2",
|
||||
"DVBC",
|
||||
"DVBT",
|
||||
"DVBH",
|
||||
"ATSC",
|
||||
NULL
|
||||
};
|
||||
|
||||
cDvbDevice::cDvbDevice(int n)
|
||||
{
|
||||
ciAdapter = NULL;
|
||||
dvbTuner = NULL;
|
||||
frontendType = fe_type_t(-1); // don't know how else to initialize this - there is no FE_UNKNOWN
|
||||
frontendType = DVBFE_DELSYS_DUMMY;
|
||||
numProvidedSystems = 0;
|
||||
spuDecoder = NULL;
|
||||
digitalAudio = false;
|
||||
playMode = pmNone;
|
||||
@ -417,9 +460,22 @@ cDvbDevice::cDvbDevice(int n)
|
||||
// We only check the devices that must be present - the others will be checked before accessing them://XXX
|
||||
|
||||
if (fd_frontend >= 0) {
|
||||
dvb_frontend_info feinfo;
|
||||
if (ioctl(fd_frontend, FE_GET_INFO, &feinfo) >= 0) {
|
||||
frontendType = feinfo.type;
|
||||
if (ioctl(fd_frontend, DVBFE_GET_DELSYS, &frontendType) >= 0) {
|
||||
const char **DeliverySystem = DeliverySystems;
|
||||
cString ds;
|
||||
for (int i = 0; i < 32; i++) {
|
||||
if (frontendType & (1u << i)) {
|
||||
numProvidedSystems++;
|
||||
if (*DeliverySystem)
|
||||
ds = cString::sprintf("%s %s", *ds ? *ds : "", *DeliverySystem);
|
||||
else
|
||||
esyslog("ERROR: unknown delivery system %d", i);
|
||||
}
|
||||
if (*DeliverySystem)
|
||||
DeliverySystem++;
|
||||
}
|
||||
if (*ds)
|
||||
isyslog("device %d provides:%s", CardIndex() + 1, *ds);
|
||||
dvbTuner = new cDvbTuner(fd_frontend, CardIndex(), frontendType);
|
||||
}
|
||||
else
|
||||
@ -744,14 +800,20 @@ bool cDvbDevice::ProvidesSource(int Source) const
|
||||
{
|
||||
int type = Source & cSource::st_Mask;
|
||||
return type == cSource::stNone
|
||||
|| type == cSource::stCable && frontendType == FE_QAM
|
||||
|| type == cSource::stSat && frontendType == FE_QPSK
|
||||
|| type == cSource::stTerr && frontendType == FE_OFDM;
|
||||
|| type == cSource::stCable && (frontendType & DVBFE_DELSYS_DVBC)
|
||||
|| type == cSource::stSat && (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
|
||||
|| type == cSource::stTerr && (frontendType & DVBFE_DELSYS_DVBT);
|
||||
}
|
||||
|
||||
bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
|
||||
{
|
||||
return ProvidesSource(Channel->Source()) && (!cSource::IsSat(Channel->Source()) || !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization()));
|
||||
if (!ProvidesSource(Channel->Source()))
|
||||
return false; // doesn't provide source
|
||||
if (!cSource::IsSat(Channel->Source()))
|
||||
return true; // source is sufficient for non sat
|
||||
if (!(frontendType & Channel->System()))
|
||||
return false; // requires modulation system which frontend doesn't provide
|
||||
return !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization());
|
||||
}
|
||||
|
||||
bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) const
|
||||
@ -760,7 +822,7 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
|
||||
bool hasPriority = Priority < 0 || Priority > this->Priority();
|
||||
bool needsDetachReceivers = false;
|
||||
|
||||
if (ProvidesSource(Channel->Source())) {
|
||||
if (ProvidesTransponder(Channel)) {
|
||||
result = hasPriority;
|
||||
if (Priority >= 0 && Receiving(true)) {
|
||||
if (dvbTuner->IsTunedTo(Channel)) {
|
||||
@ -792,6 +854,11 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
|
||||
return result;
|
||||
}
|
||||
|
||||
int cDvbDevice::NumProvidedSystems(void) const
|
||||
{
|
||||
return numProvidedSystems;
|
||||
}
|
||||
|
||||
bool cDvbDevice::IsTunedToTransponder(const cChannel *Channel)
|
||||
{
|
||||
return dvbTuner->IsTunedTo(Channel);
|
||||
|
10
dvbdevice.h
10
dvbdevice.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbdevice.h 1.47 2008/02/08 13:48:31 kls Exp $
|
||||
* $Id: dvbdevice.h 2.1 2008/04/12 11:20:48 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBDEVICE_H
|
||||
@ -15,8 +15,8 @@
|
||||
#include "device.h"
|
||||
#include "dvbspu.h"
|
||||
|
||||
#if DVB_API_VERSION != 3
|
||||
#error VDR requires Linux DVB driver API version 3!
|
||||
#if DVB_API_VERSION != 3 || DVB_API_VERSION_MINOR != 3
|
||||
#error VDR requires Linux DVB driver API version 3.3!
|
||||
#endif
|
||||
|
||||
#define MAXDVBDEVICES 8
|
||||
@ -35,7 +35,8 @@ public:
|
||||
///< Must be called before accessing any DVB functions.
|
||||
///< \return True if any devices are available.
|
||||
private:
|
||||
fe_type_t frontendType;
|
||||
dvbfe_delsys frontendType;
|
||||
int numProvidedSystems;
|
||||
int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc, fd_ca;
|
||||
protected:
|
||||
virtual void MakePrimaryDevice(bool On);
|
||||
@ -66,6 +67,7 @@ public:
|
||||
virtual bool ProvidesSource(int Source) const;
|
||||
virtual bool ProvidesTransponder(const cChannel *Channel) const;
|
||||
virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const;
|
||||
virtual int NumProvidedSystems(void) const;
|
||||
virtual bool IsTunedToTransponder(const cChannel *Channel);
|
||||
protected:
|
||||
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
||||
|
2
dvbosd.c
2
dvbosd.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbosd.c 1.32 2007/09/16 08:55:54 kls Exp $
|
||||
* $Id: dvbosd.c 2.0 2007/09/16 08:55:54 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbosd.h"
|
||||
|
2
dvbosd.h
2
dvbosd.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbosd.h 1.19 2007/08/25 13:49:34 kls Exp $
|
||||
* $Id: dvbosd.h 2.0 2007/08/25 13:49:34 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBOSD_H
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbplayer.c 1.48 2008/02/09 15:10:54 kls Exp $
|
||||
* $Id: dvbplayer.c 2.0 2008/02/09 15:10:54 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbplayer.h"
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbplayer.h 1.2 2002/06/23 10:13:51 kls Exp $
|
||||
* $Id: dvbplayer.h 2.0 2002/06/23 10:13:51 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBPLAYER_H
|
||||
|
2
dvbspu.c
2
dvbspu.c
@ -8,7 +8,7 @@
|
||||
*
|
||||
* parts of this file are derived from the OMS program.
|
||||
*
|
||||
* $Id: dvbspu.c 1.22 2007/02/03 10:13:18 kls Exp $
|
||||
* $Id: dvbspu.c 2.0 2007/02/03 10:13:18 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbspu.h"
|
||||
|
2
dvbspu.h
2
dvbspu.h
@ -8,7 +8,7 @@
|
||||
*
|
||||
* parts of this file are derived from the OMS program.
|
||||
*
|
||||
* $Id: dvbspu.h 1.12 2006/04/17 12:47:29 kls Exp $
|
||||
* $Id: dvbspu.h 2.0 2006/04/17 12:47:29 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBSPU_H
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Original author: Marco Schlüßler <marco@lordzodiac.de>
|
||||
* With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
|
||||
*
|
||||
* $Id: dvbsubtitle.c 1.3 2007/11/25 13:33:08 kls Exp $
|
||||
* $Id: dvbsubtitle.c 2.0 2007/11/25 13:33:08 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbsubtitle.h"
|
||||
|
@ -6,7 +6,7 @@
|
||||
*
|
||||
* Original author: Marco Schlüßler <marco@lordzodiac.de>
|
||||
*
|
||||
* $Id: dvbsubtitle.h 1.1 2007/10/14 14:02:46 kls Exp $
|
||||
* $Id: dvbsubtitle.h 2.0 2007/10/14 14:02:46 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBSUBTITLE_H
|
||||
|
8
eit.c
8
eit.c
@ -8,7 +8,7 @@
|
||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
||||
*
|
||||
* $Id: eit.c 1.126 2007/08/26 10:56:33 kls Exp $
|
||||
* $Id: eit.c 2.1 2008/04/13 11:27:06 kls Exp $
|
||||
*/
|
||||
|
||||
#include "eit.h"
|
||||
@ -300,9 +300,9 @@ cTDT::cTDT(const u_char *Data)
|
||||
if (diff > 2) {
|
||||
mutex.Lock();
|
||||
if (abs(diff - lastDiff) < 3) {
|
||||
isyslog("System Time = %s (%ld)", *TimeToString(loctim), loctim);
|
||||
isyslog("Local Time = %s (%ld)", *TimeToString(sattim), sattim);
|
||||
if (stime(&sattim) < 0)
|
||||
if (stime(&sattim) == 0)
|
||||
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim);
|
||||
else
|
||||
esyslog("ERROR while setting system time: %m");
|
||||
}
|
||||
lastDiff = diff;
|
||||
|
2
eit.h
2
eit.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: eit.h 1.30 2003/12/21 14:51:50 kls Exp $
|
||||
* $Id: eit.h 2.0 2003/12/21 14:51:50 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __EIT_H
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: eitscan.c 1.30 2006/01/07 14:10:17 kls Exp $
|
||||
* $Id: eitscan.c 2.0 2006/01/07 14:10:17 kls Exp $
|
||||
*/
|
||||
|
||||
#include "eitscan.h"
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: eitscan.h 1.9 2005/09/04 10:51:35 kls Exp $
|
||||
* $Id: eitscan.h 2.0 2005/09/04 10:51:35 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __EITSCAN_H
|
||||
|
2
epg.c
2
epg.c
@ -7,7 +7,7 @@
|
||||
* Original version (as used in VDR before 1.3.0) written by
|
||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||
*
|
||||
* $Id: epg.c 1.83 2008/02/16 16:09:12 kls Exp $
|
||||
* $Id: epg.c 2.0 2008/02/16 16:09:12 kls Exp $
|
||||
*/
|
||||
|
||||
#include "epg.h"
|
||||
|
2
epg.h
2
epg.h
@ -7,7 +7,7 @@
|
||||
* Original version (as used in VDR before 1.3.0) written by
|
||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||
*
|
||||
* $Id: epg.h 1.35 2006/10/07 13:47:19 kls Exp $
|
||||
* $Id: epg.h 2.0 2006/10/07 13:47:19 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __EPG_H
|
||||
|
@ -12,7 +12,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: epg2html.pl 1.7 2006/04/17 12:19:08 kls Exp $
|
||||
# $Id: epg2html.pl 2.0 2006/04/17 12:19:08 kls Exp $
|
||||
|
||||
@Index = ();
|
||||
|
||||
|
2
filter.c
2
filter.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: filter.c 1.4 2004/01/11 13:31:34 kls Exp $
|
||||
* $Id: filter.c 2.0 2004/01/11 13:31:34 kls Exp $
|
||||
*/
|
||||
|
||||
#include "filter.h"
|
||||
|
2
filter.h
2
filter.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: filter.h 1.3 2004/01/11 13:31:59 kls Exp $
|
||||
* $Id: filter.h 2.0 2004/01/11 13:31:59 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __FILTER_H
|
||||
|
2
font.c
2
font.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: font.c 1.25 2008/03/01 10:19:41 kls Exp $
|
||||
* $Id: font.c 2.0 2008/03/01 10:19:41 kls Exp $
|
||||
*/
|
||||
|
||||
#include "font.h"
|
||||
|
2
font.h
2
font.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: font.h 1.20 2007/06/23 10:09:14 kls Exp $
|
||||
* $Id: font.h 2.0 2007/06/23 10:09:14 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __FONT_H
|
||||
|
@ -10,7 +10,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: i18n-to-gettext.pl 1.6 2007/11/04 10:57:36 kls Exp $
|
||||
# $Id: i18n-to-gettext.pl 2.0 2007/11/04 10:57:36 kls Exp $
|
||||
|
||||
# How to convert an actual plugin:
|
||||
#
|
||||
|
2
i18n.c
2
i18n.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: i18n.c 1.319 2008/01/19 12:07:11 kls Exp $
|
||||
* $Id: i18n.c 2.0 2008/01/19 12:07:11 kls Exp $
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
2
i18n.h
2
i18n.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: i18n.h 1.25 2008/01/19 11:56:19 kls Exp $
|
||||
* $Id: i18n.h 2.0 2008/01/19 11:56:19 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __I18N_H
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: interface.c 1.77 2008/02/10 15:49:15 kls Exp $
|
||||
* $Id: interface.c 2.0 2008/02/10 15:49:15 kls Exp $
|
||||
*/
|
||||
|
||||
#include "interface.h"
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: interface.h 1.31 2004/05/01 11:11:13 kls Exp $
|
||||
* $Id: interface.h 2.0 2004/05/01 11:11:13 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __INTERFACE_H
|
||||
|
2
keys.c
2
keys.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: keys.c 1.17 2008/02/10 14:08:48 kls Exp $
|
||||
* $Id: keys.c 2.0 2008/02/10 14:08:48 kls Exp $
|
||||
*/
|
||||
|
||||
#include "keys.h"
|
||||
|
2
keys.h
2
keys.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: keys.h 1.14 2007/08/26 12:34:50 kls Exp $
|
||||
* $Id: keys.h 2.0 2007/08/26 12:34:50 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __KEYS_H
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a libsi
|
||||
#
|
||||
# $Id: Makefile 1.6 2006/05/26 10:40:19 kls Exp $
|
||||
# $Id: Makefile 2.0 2006/05/26 10:40:19 kls Exp $
|
||||
|
||||
### The C++ compiler and options:
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: descriptor.c 1.22 2007/02/03 11:45:58 kls Exp $
|
||||
* $Id: descriptor.c 2.0 2007/02/03 11:45:58 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: descriptor.h 1.16 2007/02/03 11:45:58 kls Exp $
|
||||
* $Id: descriptor.h 2.0 2007/02/03 11:45:58 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# $Id: gendescr.pl 1.2 2003/12/13 10:40:53 kls Exp $
|
||||
# $Id: gendescr.pl 2.0 2003/12/13 10:40:53 kls Exp $
|
||||
|
||||
print "Name (ohne ...Descriptor):";
|
||||
$name=<STDIN>;
|
||||
|
@ -10,7 +10,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: headers.h 1.9 2007/02/03 11:45:58 kls Exp $
|
||||
* $Id: headers.h 2.0 2007/02/03 11:45:58 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: section.c 1.5 2006/04/14 10:53:44 kls Exp $
|
||||
* $Id: section.c 2.0 2006/04/14 10:53:44 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: section.h 1.4 2006/04/14 10:53:44 kls Exp $
|
||||
* $Id: section.h 2.0 2006/04/14 10:53:44 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: si.c 1.25 2008/03/05 17:00:55 kls Exp $
|
||||
* $Id: si.c 2.0 2008/03/05 17:00:55 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: si.h 1.17 2007/04/22 13:32:09 kls Exp $
|
||||
* $Id: si.h 2.0 2007/04/22 13:32:09 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: util.c 1.7 2006/02/18 11:17:50 kls Exp $
|
||||
* $Id: util.c 2.0 2006/02/18 11:17:50 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* $Id: util.h 1.7 2006/02/25 10:13:28 kls Exp $
|
||||
* $Id: util.h 2.0 2006/02/25 10:13:28 kls Exp $
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
2
lirc.c
2
lirc.c
@ -6,7 +6,7 @@
|
||||
*
|
||||
* LIRC support added by Carsten Koch <Carsten.Koch@icem.de> 2000-06-16.
|
||||
*
|
||||
* $Id: lirc.c 1.15 2006/05/28 08:48:13 kls Exp $
|
||||
* $Id: lirc.c 2.0 2006/05/28 08:48:13 kls Exp $
|
||||
*/
|
||||
|
||||
#include "lirc.h"
|
||||
|
2
lirc.h
2
lirc.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: lirc.h 1.4 2006/01/27 16:00:19 kls Exp $
|
||||
* $Id: lirc.h 2.0 2006/01/27 16:00:19 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __LIRC_H
|
||||
|
80
menu.c
80
menu.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menu.c 1.482 2008/03/16 11:15:28 kls Exp $
|
||||
* $Id: menu.c 2.1 2008/04/12 11:37:17 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
@ -182,70 +182,6 @@ eOSState cMenuEditSrcItem::ProcessKey(eKeys Key)
|
||||
return state;
|
||||
}
|
||||
|
||||
// --- cMenuEditMapItem ------------------------------------------------------
|
||||
|
||||
class cMenuEditMapItem : public cMenuEditItem {
|
||||
protected:
|
||||
int *value;
|
||||
const tChannelParameterMap *map;
|
||||
const char *zeroString;
|
||||
virtual void Set(void);
|
||||
public:
|
||||
cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString = NULL);
|
||||
virtual eOSState ProcessKey(eKeys Key);
|
||||
};
|
||||
|
||||
cMenuEditMapItem::cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString)
|
||||
:cMenuEditItem(Name)
|
||||
{
|
||||
value = Value;
|
||||
map = Map;
|
||||
zeroString = ZeroString;
|
||||
Set();
|
||||
}
|
||||
|
||||
void cMenuEditMapItem::Set(void)
|
||||
{
|
||||
int n = MapToUser(*value, map);
|
||||
if (n == 999)
|
||||
SetValue(tr("auto"));
|
||||
else if (n == 0 && zeroString)
|
||||
SetValue(zeroString);
|
||||
else if (n >= 0) {
|
||||
char buf[16];
|
||||
snprintf(buf, sizeof(buf), "%d", n);
|
||||
SetValue(buf);
|
||||
}
|
||||
else
|
||||
SetValue("???");
|
||||
}
|
||||
|
||||
eOSState cMenuEditMapItem::ProcessKey(eKeys Key)
|
||||
{
|
||||
eOSState state = cMenuEditItem::ProcessKey(Key);
|
||||
|
||||
if (state == osUnknown) {
|
||||
int newValue = *value;
|
||||
int n = DriverIndex(*value, map);
|
||||
if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
|
||||
if (n-- > 0)
|
||||
newValue = map[n].driverValue;
|
||||
}
|
||||
else if (NORMALKEY(Key) == kRight) {
|
||||
if (map[++n].userValue >= 0)
|
||||
newValue = map[n].driverValue;
|
||||
}
|
||||
else
|
||||
return state;
|
||||
if (newValue != *value) {
|
||||
*value = newValue;
|
||||
Set();
|
||||
}
|
||||
state = osContinue;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
// --- cMenuEditChannel ------------------------------------------------------
|
||||
|
||||
class cMenuEditChannel : public cOsdMenu {
|
||||
@ -306,15 +242,19 @@ void cMenuEditChannel::Setup(void)
|
||||
XXX*/
|
||||
// Parameters for specific types of sources:
|
||||
ST(" S ") Add(new cMenuEditChrItem( tr("Polarization"), &data.polarization, "hvlr"));
|
||||
ST(" S ") Add(new cMenuEditMapItem( tr("System"), &data.system, SystemValues));
|
||||
ST("CS ") Add(new cMenuEditIntItem( tr("Srate"), &data.srate));
|
||||
ST("CST") Add(new cMenuEditMapItem( tr("Inversion"), &data.inversion, InversionValues, tr("off")));
|
||||
ST("CST") Add(new cMenuEditMapItem( tr("CoderateH"), &data.coderateH, CoderateValues, tr("none")));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("CoderateL"), &data.coderateL, CoderateValues, tr("none")));
|
||||
ST("C T") Add(new cMenuEditMapItem( tr("Modulation"), &data.modulation, ModulationValues, "QPSK"));
|
||||
ST("CST") Add(new cMenuEditMapItem( tr("Inversion"), &data.inversion, InversionValues));
|
||||
ST("CST") Add(new cMenuEditMapItem( tr("CoderateH"), &data.coderateH, CoderateValues));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("CoderateL"), &data.coderateL, CoderateValues));
|
||||
ST("CST") Add(new cMenuEditMapItem( tr("Modulation"), &data.modulation, ModulationValues));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("Bandwidth"), &data.bandwidth, BandwidthValues));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("Transmission"), &data.transmission, TransmissionValues));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("Guard"), &data.guard, GuardValues));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("Hierarchy"), &data.hierarchy, HierarchyValues, tr("none")));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("Hierarchy"), &data.hierarchy, HierarchyValues));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("Alpha"), &data.alpha, AlphaValues));
|
||||
ST(" T") Add(new cMenuEditMapItem( tr("Priority"), &data.priority, PriorityValues));
|
||||
ST(" S ") Add(new cMenuEditMapItem( tr("Rolloff"), &data.rollOff, RollOffValues));
|
||||
|
||||
SetCurrent(Get(current));
|
||||
Display();
|
||||
|
2
menu.h
2
menu.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menu.h 1.91 2008/02/10 16:01:53 kls Exp $
|
||||
* $Id: menu.h 2.0 2008/02/10 16:01:53 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __MENU_H
|
||||
|
60
menuitems.c
60
menuitems.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menuitems.c 1.58 2008/02/10 16:03:30 kls Exp $
|
||||
* $Id: menuitems.c 2.1 2008/04/12 12:05:25 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menuitems.h"
|
||||
@ -936,6 +936,64 @@ eOSState cMenuEditTimeItem::ProcessKey(eKeys Key)
|
||||
return state;
|
||||
}
|
||||
|
||||
// --- cMenuEditMapItem ------------------------------------------------------
|
||||
|
||||
cMenuEditMapItem::cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString)
|
||||
:cMenuEditItem(Name)
|
||||
{
|
||||
value = Value;
|
||||
map = Map;
|
||||
zeroString = ZeroString;
|
||||
Set();
|
||||
}
|
||||
|
||||
void cMenuEditMapItem::Set(void)
|
||||
{
|
||||
const char *s = NULL;
|
||||
int n = MapToUser(*value, map, &s);
|
||||
if (n == 999)
|
||||
SetValue(tr("auto"));
|
||||
else if (n == 0 && zeroString)
|
||||
SetValue(zeroString);
|
||||
else if (n >= 0) {
|
||||
if (s)
|
||||
SetValue(s);
|
||||
else {
|
||||
char buf[16];
|
||||
snprintf(buf, sizeof(buf), "%d", n);
|
||||
SetValue(buf);
|
||||
}
|
||||
}
|
||||
else
|
||||
SetValue("???");
|
||||
}
|
||||
|
||||
eOSState cMenuEditMapItem::ProcessKey(eKeys Key)
|
||||
{
|
||||
eOSState state = cMenuEditItem::ProcessKey(Key);
|
||||
|
||||
if (state == osUnknown) {
|
||||
int newValue = *value;
|
||||
int n = DriverIndex(*value, map);
|
||||
if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
|
||||
if (n-- > 0)
|
||||
newValue = map[n].driverValue;
|
||||
}
|
||||
else if (NORMALKEY(Key) == kRight) {
|
||||
if (map[++n].userValue >= 0)
|
||||
newValue = map[n].driverValue;
|
||||
}
|
||||
else
|
||||
return state;
|
||||
if (newValue != *value) {
|
||||
*value = newValue;
|
||||
Set();
|
||||
}
|
||||
state = osContinue;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
// --- cMenuSetupPage --------------------------------------------------------
|
||||
|
||||
cMenuSetupPage::cMenuSetupPage(void)
|
||||
|
13
menuitems.h
13
menuitems.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menuitems.h 1.25 2008/02/16 16:09:58 kls Exp $
|
||||
* $Id: menuitems.h 2.1 2008/04/12 12:03:59 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __MENUITEMS_H
|
||||
@ -160,6 +160,17 @@ public:
|
||||
virtual eOSState ProcessKey(eKeys Key);
|
||||
};
|
||||
|
||||
class cMenuEditMapItem : public cMenuEditItem {
|
||||
protected:
|
||||
int *value;
|
||||
const tChannelParameterMap *map;
|
||||
const char *zeroString;
|
||||
virtual void Set(void);
|
||||
public:
|
||||
cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString = NULL);
|
||||
virtual eOSState ProcessKey(eKeys Key);
|
||||
};
|
||||
|
||||
class cPlugin;
|
||||
|
||||
class cMenuSetupPage : public cOsdMenu {
|
||||
|
@ -12,7 +12,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: newplugin 1.41 2008/01/13 13:00:23 kls Exp $
|
||||
# $Id: newplugin 2.0 2008/01/13 13:00:23 kls Exp $
|
||||
|
||||
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
|
||||
|
||||
|
38
nit.c
38
nit.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: nit.c 1.18 2008/02/08 13:48:31 kls Exp $
|
||||
* $Id: nit.c 2.1 2008/04/12 12:06:40 kls Exp $
|
||||
*/
|
||||
|
||||
#include "nit.h"
|
||||
@ -127,8 +127,13 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
||||
int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 100;
|
||||
static char Polarizations[] = { 'h', 'v', 'l', 'r' };
|
||||
char Polarization = Polarizations[sd->getPolarization()];
|
||||
static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
|
||||
static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
|
||||
int CodeRate = CodeRates[sd->getFecInner()];
|
||||
static int Modulations[] = { DVBFE_MOD_AUTO, DVBFE_MOD_QPSK, DVBFE_MOD_8PSK, DVBFE_MOD_QAM16 };
|
||||
int Modulation = Modulations[sd->getModulationType()];
|
||||
int System = sd->getModulationSystem() ? DVBFE_DELSYS_DVBS2 : DVBFE_DELSYS_DVBS;
|
||||
static int RollOffs[] = { DVBFE_ROLLOFF_35, DVBFE_ROLLOFF_25, DVBFE_ROLLOFF_20, DVBFE_ROLLOFF_UNKNOWN };
|
||||
int RollOff = sd->getModulationSystem() ? RollOffs[sd->getRollOff()] : DVBFE_ROLLOFF_UNKNOWN;
|
||||
int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
|
||||
if (ThisNIT >= 0) {
|
||||
for (int n = 0; n < NumFrequencies; n++) {
|
||||
@ -155,14 +160,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
||||
}
|
||||
}
|
||||
if (ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Transponder())) // only modify channels if we're actually receiving this transponder
|
||||
Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate);
|
||||
Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate, Modulation, System, RollOff);
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
for (int n = 0; n < NumFrequencies; n++) {
|
||||
cChannel *Channel = new cChannel;
|
||||
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
|
||||
if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate))
|
||||
if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate, Modulation, System, RollOff))
|
||||
EITScanner.AddTransponder(Channel);
|
||||
else
|
||||
delete Channel;
|
||||
@ -176,9 +181,9 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
||||
int Source = cSource::FromData(cSource::stCable);
|
||||
int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 10;
|
||||
//XXX FEC_outer???
|
||||
static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
|
||||
static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
|
||||
int CodeRate = CodeRates[sd->getFecInner()];
|
||||
static int Modulations[] = { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO };
|
||||
static int Modulations[] = { DVBFE_MOD_NONE, DVBFE_MOD_QAM16, DVBFE_MOD_QAM32, DVBFE_MOD_QAM64, DVBFE_MOD_QAM128, DVBFE_MOD_QAM256, QAM_AUTO };
|
||||
int Modulation = Modulations[min(sd->getModulation(), 6)];
|
||||
int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
|
||||
if (ThisNIT >= 0) {
|
||||
@ -226,19 +231,22 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
||||
SI::TerrestrialDeliverySystemDescriptor *sd = (SI::TerrestrialDeliverySystemDescriptor *)d;
|
||||
int Source = cSource::FromData(cSource::stTerr);
|
||||
int Frequency = Frequencies[0] = sd->getFrequency() * 10;
|
||||
static int Bandwidths[] = { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO };
|
||||
static int Bandwidths[] = { DVBFE_BANDWIDTH_8_MHZ, DVBFE_BANDWIDTH_7_MHZ, DVBFE_BANDWIDTH_6_MHZ, DVBFE_BANDWIDTH_5_MHZ, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO };
|
||||
int Bandwidth = Bandwidths[sd->getBandwidth()];
|
||||
static int Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };
|
||||
static int Constellations[] = { DVBFE_MOD_QPSK, DVBFE_MOD_QAM16, DVBFE_MOD_QAM64, DVBFE_MOD_AUTO };
|
||||
int Constellation = Constellations[sd->getConstellation()];
|
||||
static int Hierarchies[] = { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO };
|
||||
int Hierarchy = Hierarchies[sd->getHierarchy()];
|
||||
static int CodeRates[] = { FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO };
|
||||
static int CodeRates[] = { DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO };
|
||||
int CodeRateHP = CodeRates[sd->getCodeRateHP()];
|
||||
int CodeRateLP = CodeRates[sd->getCodeRateLP()];
|
||||
static int GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4 };
|
||||
static int GuardIntervals[] = { DVBFE_GUARD_INTERVAL_1_32, DVBFE_GUARD_INTERVAL_1_16, DVBFE_GUARD_INTERVAL_1_8, DVBFE_GUARD_INTERVAL_1_4 };
|
||||
int GuardInterval = GuardIntervals[sd->getGuardInterval()];
|
||||
static int TransmissionModes[] = { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_AUTO };
|
||||
static int TransmissionModes[] = { DVBFE_TRANSMISSION_MODE_2K, DVBFE_TRANSMISSION_MODE_8K, DVBFE_TRANSMISSION_MODE_4K, DVBFE_TRANSMISSION_MODE_AUTO };
|
||||
int TransmissionMode = TransmissionModes[sd->getTransmissionMode()];
|
||||
static int Priorities[] = { DVBFE_STREAM_PRIORITY_LP, DVBFE_STREAM_PRIORITY_HP };
|
||||
int Priority = Priorities[sd->getPriority()];
|
||||
static int Alphas[] = { 0, DVBFE_ALPHA_1, DVBFE_ALPHA_2, DVBFE_ALPHA_4 };
|
||||
int Alpha = Alphas[sd->getHierarchy() & 3];
|
||||
int Hierarchy = Alpha ? DVBFE_HIERARCHY_ON : DVBFE_HIERARCHY_OFF;
|
||||
if (ThisNIT >= 0) {
|
||||
for (int n = 0; n < NumFrequencies; n++) {
|
||||
if (ISTRANSPONDER(Frequencies[n] / 1000000, Transponder())) {
|
||||
@ -264,14 +272,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
||||
}
|
||||
}
|
||||
if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder
|
||||
Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
|
||||
Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority);
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
for (int n = 0; n < NumFrequencies; n++) {
|
||||
cChannel *Channel = new cChannel;
|
||||
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
|
||||
if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode))
|
||||
if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority))
|
||||
EITScanner.AddTransponder(Channel);
|
||||
else
|
||||
delete Channel;
|
||||
|
2
nit.h
2
nit.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: nit.h 1.3 2007/06/10 08:50:21 kls Exp $
|
||||
* $Id: nit.h 2.0 2007/06/10 08:50:21 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __NIT_H
|
||||
|
2
osd.c
2
osd.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: osd.c 1.75 2007/10/12 12:38:36 kls Exp $
|
||||
* $Id: osd.c 2.0 2007/10/12 12:38:36 kls Exp $
|
||||
*/
|
||||
|
||||
#include "osd.h"
|
||||
|
2
osd.h
2
osd.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: osd.h 1.58 2007/10/12 14:28:44 kls Exp $
|
||||
* $Id: osd.h 2.0 2007/10/12 14:28:44 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __OSD_H
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: osdbase.c 1.32 2008/02/17 11:33:04 kls Exp $
|
||||
* $Id: osdbase.c 2.0 2008/02/17 11:33:04 kls Exp $
|
||||
*/
|
||||
|
||||
#include "osdbase.h"
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: osdbase.h 1.17 2007/11/03 14:50:52 kls Exp $
|
||||
* $Id: osdbase.h 2.0 2007/11/03 14:50:52 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __OSDBASE_H
|
||||
|
3
pat.c
3
pat.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: pat.c 1.20 2008/02/08 13:48:31 kls Exp $
|
||||
* $Id: pat.c 2.1 2008/04/12 13:34:50 kls Exp $
|
||||
*/
|
||||
|
||||
#include "pat.h"
|
||||
@ -343,6 +343,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
||||
switch (stream.getStreamType()) {
|
||||
case 1: // STREAMTYPE_11172_VIDEO
|
||||
case 2: // STREAMTYPE_13818_VIDEO
|
||||
//TODO case 0x1B: // MPEG4
|
||||
Vpid = stream.getPid();
|
||||
break;
|
||||
case 3: // STREAMTYPE_11172_AUDIO
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user