mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
186ceaaacb | ||
|
36b1caedc2 | ||
|
6715f40484 | ||
|
17485ccc96 | ||
|
1857a0ca20 | ||
|
a5adaefb68 | ||
|
89bb6f57fd | ||
|
1f0776c548 | ||
|
5da044b4ae | ||
|
da3939cb10 | ||
|
de67eacbda | ||
|
7e41418615 | ||
|
7c924aa664 | ||
|
a8478802a3 | ||
|
6b32797180 | ||
|
1d417431d6 | ||
|
f933b63d1f | ||
|
644fcc3bbe |
26
CONTRIBUTORS
26
CONTRIBUTORS
@ -595,6 +595,8 @@ Helmut Auer <vdr@helmutauer.de>
|
|||||||
not two hex digits after the '#'
|
not two hex digits after the '#'
|
||||||
for suggesting to suppress the automatic shutdown if the remote control is
|
for suggesting to suppress the automatic shutdown if the remote control is
|
||||||
currently disabled
|
currently disabled
|
||||||
|
for suggesting to improve logging system time changes to avoid problems on slow
|
||||||
|
systems under heavy load
|
||||||
|
|
||||||
Jeremy Hall <jhall@UU.NET>
|
Jeremy Hall <jhall@UU.NET>
|
||||||
for fixing an incomplete initialization of the filter parameters in eit.c
|
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
|
for making the SVDRP command LSTC list the channels with group separators if the
|
||||||
option ':groups' is given
|
option ':groups' is given
|
||||||
for fixing handling 3 and 4 byte UTF-8 symbols in Utf8CharGet()
|
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>)
|
Olivier Jacques <jacquesolivier@hotmail.com>)
|
||||||
for translating OSD texts to the French language
|
for translating OSD texts to the French language
|
||||||
@ -1050,6 +1053,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
|
|||||||
language
|
language
|
||||||
for fixing displaying the free disk space when entering the recordings menu where
|
for fixing displaying the free disk space when entering the recordings menu where
|
||||||
the last replayed recording was in a subdirectory, and pressing Back
|
the last replayed recording was in a subdirectory, and pressing Back
|
||||||
|
for replacing the Finnish language code "smi" with "suo"
|
||||||
|
|
||||||
Ralf Klueber <ralf.klueber@vodafone.com>
|
Ralf Klueber <ralf.klueber@vodafone.com>
|
||||||
for reporting a bug in cutting a recording if there is only a single editing mark
|
for reporting a bug in cutting a recording if there is only a single editing mark
|
||||||
@ -1174,6 +1178,7 @@ Reinhard Nissl <rnissl@gmx.de>
|
|||||||
for reporting an invalid access in the section handler when ending VDR
|
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
|
for pointing out that cDevice::Transferring() doesn't return the right value in the
|
||||||
early stage of channel switching
|
early stage of channel switching
|
||||||
|
for fixing handling the counter in detection of pre 1.3.19 PS data
|
||||||
|
|
||||||
Richard Robson <richard_robson@beeb.net>
|
Richard Robson <richard_robson@beeb.net>
|
||||||
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
||||||
@ -1506,6 +1511,7 @@ Arthur Konovalov <kasjas@hot.ee>
|
|||||||
for translating OSD texts to the Estonian language
|
for translating OSD texts to the Estonian language
|
||||||
for fixing a missing ',' in the Greek OSD texts
|
for fixing a missing ',' in the Greek OSD texts
|
||||||
for fixing a missing ',' in the Swedish 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>
|
Milos Kapoun <m.kapoun@cra.cz>
|
||||||
for suggesting to skip code table info in SI data
|
for suggesting to skip code table info in SI data
|
||||||
@ -1574,6 +1580,7 @@ Udo Richter <udo_richter@gmx.de>
|
|||||||
for making housekeeping wait for a while after a replay has ended
|
for making housekeeping wait for a while after a replay has ended
|
||||||
for fixing error handling in cCuttingThread::Action()
|
for fixing error handling in cCuttingThread::Action()
|
||||||
for suppressing the automatic shutdown if the remote control is currently disabled
|
for suppressing the automatic shutdown if the remote control is currently disabled
|
||||||
|
for fixing a problem with calling isyslog() from within the SignalHandler()
|
||||||
|
|
||||||
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
||||||
for his help in keeping 'channels.conf.terr' up to date
|
for his help in keeping 'channels.conf.terr' up to date
|
||||||
@ -1890,6 +1897,7 @@ Alexander Rieger <Alexander.Rieger@inka.de>
|
|||||||
for fixing cTimer::operator=() in case a cTimer variable is assigned to itself
|
for fixing cTimer::operator=() in case a cTimer variable is assigned to itself
|
||||||
for making the list of tracks given in cStatus::SetAudioTrack() NULL terminated
|
for making the list of tracks given in cStatus::SetAudioTrack() NULL terminated
|
||||||
for fixing handling kLeft in the calls to cStatus::MsgOsdTextItem()
|
for fixing handling kLeft in the calls to cStatus::MsgOsdTextItem()
|
||||||
|
for fixing a possible integer overflow in GetAbsTime()
|
||||||
|
|
||||||
Philip Prindeville <philipp_subx@redfish-solutions.com>
|
Philip Prindeville <philipp_subx@redfish-solutions.com>
|
||||||
for updates to 'sources.conf'
|
for updates to 'sources.conf'
|
||||||
@ -2111,6 +2119,7 @@ Tobias Grimm <tobias.grimm@e-tobi.net>
|
|||||||
for making the non-breaking space symbol be rendered as a blank
|
for making the non-breaking space symbol be rendered as a blank
|
||||||
for fixing a signed character used as index in cBase64Encoder::NextLine()
|
for fixing a signed character used as index in cBase64Encoder::NextLine()
|
||||||
for fixing formatting the name section in the VDR man pages
|
for fixing formatting the name section in the VDR man pages
|
||||||
|
for reporting unneeded include files <linux/dvb/dmx.h> und <time.h> in remux.h
|
||||||
|
|
||||||
Helge Lenz <h.lenz@gmx.de>
|
Helge Lenz <h.lenz@gmx.de>
|
||||||
for reporting a bug in setting the 'Delta' parameter when calling the shutdown
|
for reporting a bug in setting the 'Delta' parameter when calling the shutdown
|
||||||
@ -2347,3 +2356,20 @@ Adrian Caval <anrxc@sysphere.org>
|
|||||||
|
|
||||||
Nan Feng <nfgx@21cn.com>
|
Nan Feng <nfgx@21cn.com>
|
||||||
for translating OSD texts to the Chinese language
|
for translating OSD texts to the Chinese language
|
||||||
|
|
||||||
|
Edgar Toernig <froese@gmx.de>
|
||||||
|
for suggesting to not call FcFini() to avoid problems with older (broken) versions
|
||||||
|
of fontconfig
|
||||||
|
|
||||||
|
Winfried Köhler <w_koehl@gmx.de>
|
||||||
|
for fixing wrong value for TableIdBAT in libsi/si.h
|
||||||
|
|
||||||
|
Ralf Schueler <dl4mw@schueler.ws>
|
||||||
|
for backporting "Changed cDvbDevice::GrabImage() to use V4L" from version 1.7.3
|
||||||
|
to 1.6.0-3
|
||||||
|
for backporting "Added some missing 'const' keywords to avoid compilation errors
|
||||||
|
with gcc 4.4" from version 1.7.8 to 1.6.0-3
|
||||||
|
for backporting "Modified cSVDRP::CmdGRAB() to avoid writing into const data"
|
||||||
|
from version 1.7.8 to 1.6.0-3
|
||||||
|
for backporting "Fixed cRecordings::DelByName() to avoid compilation errors with
|
||||||
|
gcc 4.4" from version 1.7.9 to 1.6.0-3
|
||||||
|
40
HISTORY
40
HISTORY
@ -5729,3 +5729,43 @@ Video Disk Recorder Revision History
|
|||||||
- Added Chinese language texts (thanks to Nan Feng).
|
- Added Chinese language texts (thanks to Nan Feng).
|
||||||
- Updated the Portuguese language texts.
|
- Updated the Portuguese language texts.
|
||||||
- Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
|
- Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
2008-09-06: Version 1.6.0-2
|
||||||
|
|
||||||
|
- Updated the Italian OSD texts (thanks to Diego Pierotto).
|
||||||
|
- The SVDRP signon message now indicates the character encoding in use, as in
|
||||||
|
"220 video SVDRP VideoDiskRecorder 1.7.1; Fri May 2 16:17:10 2008; ISO-8859-1".
|
||||||
|
This may be useful for instance for external tools that provide EPG data, so that
|
||||||
|
they can correctly encode the strings.
|
||||||
|
- No longer calling FcFini() to avoid problems with older (broken) versions of
|
||||||
|
fontconfig (suggested by Edgar Toernig).
|
||||||
|
- Updated the sources.conf file (thanks to Oleg Roitburd).
|
||||||
|
- Fixed a possible integer overflow in GetAbsTime() (thanks to Alexander Rieger).
|
||||||
|
- Fixed a problem with calling isyslog() from within the SignalHandler() (thanks
|
||||||
|
to Udo Richter).
|
||||||
|
- Replaced the Finnish language code "smi" with "suo" (thanks to Rolf Ahrenberg).
|
||||||
|
- Fixed wrong value for TableIdBAT in libsi/si.h (thanks to Winfried Köhler).
|
||||||
|
- Removed unneeded include files <linux/dvb/dmx.h> und <time.h> from remux.h
|
||||||
|
(reported by Tobias Grimm).
|
||||||
|
|
||||||
|
2012-02-14: Version 1.6.0-3
|
||||||
|
|
||||||
|
- Changed cDvbDevice::GrabImage() to use V4L2
|
||||||
|
(backport from version 1.7.3, thanks to Ralf Schueler).
|
||||||
|
- Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
|
||||||
|
(backport from version 1.7.8, thanks to Ralf Schueler).
|
||||||
|
- Modified cSVDRP::CmdGRAB() to avoid writing into const data
|
||||||
|
(backport from version 1.7.8, thanks to Ralf Schueler).
|
||||||
|
- Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
|
||||||
|
(backport from version 1.7.9, thanks to Ralf Schueler).
|
||||||
|
4
ci.c
4
ci.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: ci.c 1.48 2007/04/30 13:02:49 kls Exp $
|
* $Id: ci.c 1.48.1.1 2008/04/13 13:33:32 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ci.h"
|
#include "ci.h"
|
||||||
@ -1525,7 +1525,7 @@ void cCiAdapter::Action(void)
|
|||||||
|
|
||||||
cCamSlots CamSlots;
|
cCamSlots CamSlots;
|
||||||
|
|
||||||
#define MODULE_CHECK_INTERVAL 100 // ms
|
#define MODULE_CHECK_INTERVAL 500 // ms
|
||||||
#define MODULE_RESET_TIMEOUT 2 // s
|
#define MODULE_RESET_TIMEOUT 2 // s
|
||||||
|
|
||||||
cCamSlot::cCamSlot(cCiAdapter *CiAdapter)
|
cCamSlot::cCamSlot(cCiAdapter *CiAdapter)
|
||||||
|
4
config.h
4
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 1.310 2008/03/23 10:26:10 kls Exp $
|
* $Id: config.h 1.310.1.3 2012/02/14 12:16:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
// VDR's own version number:
|
// VDR's own version number:
|
||||||
|
|
||||||
#define VDRVERSION "1.6.0"
|
#define VDRVERSION "1.6.0-3"
|
||||||
#define VDRVERSNUM 10600 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10600 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// The plugin API's version number:
|
// The plugin API's version number:
|
||||||
|
7
device.c
7
device.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.c 1.157 2008/03/09 10:03:34 kls Exp $
|
* $Id: device.c 1.157.1.1 2008/04/13 11:16:00 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -1273,7 +1273,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
|
|||||||
uchar SubStreamIndex = SubStreamId & 0x1F;
|
uchar SubStreamIndex = SubStreamId & 0x1F;
|
||||||
|
|
||||||
// Compatibility mode for old VDR recordings, where 0xBD was only AC3:
|
// 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) {
|
if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
|
||||||
SubStreamId = c;
|
SubStreamId = c;
|
||||||
SubStreamType = 0x80;
|
SubStreamType = 0x80;
|
||||||
@ -1314,7 +1314,8 @@ pre_1_3_19_PrivateStreamDeteced:
|
|||||||
if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
|
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);
|
dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode - substream id = %02X", SubStreamId);
|
||||||
ClrAvailableTracks();
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
144
dvbdevice.c
144
dvbdevice.c
@ -4,13 +4,13 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 1.170 2008/02/09 16:11:44 kls Exp $
|
* $Id: dvbdevice.c 1.170.1.1 2012/02/14 12:36:30 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <linux/videodev.h>
|
#include <linux/videodev2.h>
|
||||||
#include <linux/dvb/audio.h>
|
#include <linux/dvb/audio.h>
|
||||||
#include <linux/dvb/dmx.h>
|
#include <linux/dvb/dmx.h>
|
||||||
#include <linux/dvb/frontend.h>
|
#include <linux/dvb/frontend.h>
|
||||||
@ -521,69 +521,103 @@ uchar *cDvbDevice::GrabImage(int &Size, bool Jpeg, int Quality, int SizeX, int S
|
|||||||
int videoDev = open(buffer, O_RDWR);
|
int videoDev = open(buffer, O_RDWR);
|
||||||
if (videoDev >= 0) {
|
if (videoDev >= 0) {
|
||||||
uchar *result = NULL;
|
uchar *result = NULL;
|
||||||
struct video_mbuf mbuf;
|
// set up the size and RGB
|
||||||
if (ioctl(videoDev, VIDIOCGMBUF, &mbuf) == 0) {
|
v4l2_format fmt;
|
||||||
int msize = mbuf.size;
|
memset(&fmt, 0, sizeof(fmt));
|
||||||
unsigned char *mem = (unsigned char *)mmap(0, msize, PROT_READ | PROT_WRITE, MAP_SHARED, videoDev, 0);
|
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
if (mem && mem != (unsigned char *)-1) {
|
fmt.fmt.pix.width = SizeX;
|
||||||
// set up the size and RGB
|
fmt.fmt.pix.height = SizeY;
|
||||||
struct video_capability vc;
|
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_BGR24;
|
||||||
if (ioctl(videoDev, VIDIOCGCAP, &vc) == 0) {
|
fmt.fmt.pix.field = V4L2_FIELD_ANY;
|
||||||
struct video_mmap vm;
|
if (ioctl(videoDev, VIDIOC_S_FMT, &fmt) == 0) {
|
||||||
vm.frame = 0;
|
v4l2_requestbuffers reqBuf;
|
||||||
if ((SizeX > 0) && (SizeX <= vc.maxwidth) &&
|
memset(&reqBuf, 0, sizeof(reqBuf));
|
||||||
(SizeY > 0) && (SizeY <= vc.maxheight)) {
|
reqBuf.count = 2;
|
||||||
vm.width = SizeX;
|
reqBuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
vm.height = SizeY;
|
reqBuf.memory = V4L2_MEMORY_MMAP;
|
||||||
}
|
if (ioctl(videoDev, VIDIOC_REQBUFS, &reqBuf) >= 0) {
|
||||||
else {
|
v4l2_buffer mbuf;
|
||||||
vm.width = vc.maxwidth;
|
memset(&mbuf, 0, sizeof(mbuf));
|
||||||
vm.height = vc.maxheight;
|
mbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
}
|
mbuf.memory = V4L2_MEMORY_MMAP;
|
||||||
vm.format = VIDEO_PALETTE_RGB24;
|
if (ioctl(videoDev, VIDIOC_QUERYBUF, &mbuf) == 0) {
|
||||||
if (ioctl(videoDev, VIDIOCMCAPTURE, &vm) == 0 && ioctl(videoDev, VIDIOCSYNC, &vm.frame) == 0) {
|
int msize = mbuf.length;
|
||||||
// make RGB out of BGR:
|
unsigned char *mem = (unsigned char *)mmap(0, msize, PROT_READ | PROT_WRITE, MAP_SHARED, videoDev, 0);
|
||||||
int memsize = vm.width * vm.height;
|
if (mem && mem != (unsigned char *)-1) {
|
||||||
unsigned char *mem1 = mem;
|
v4l2_buffer buf;
|
||||||
for (int i = 0; i < memsize; i++) {
|
memset(&buf, 0, sizeof(buf));
|
||||||
unsigned char tmp = mem1[2];
|
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
mem1[2] = mem1[0];
|
buf.memory = V4L2_MEMORY_MMAP;
|
||||||
mem1[0] = tmp;
|
buf.index = 0;
|
||||||
mem1 += 3;
|
if (ioctl(videoDev, VIDIOC_QBUF, &buf) == 0) {
|
||||||
}
|
v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
|
if (ioctl (videoDev, VIDIOC_STREAMON, &type) == 0) {
|
||||||
|
memset(&buf, 0, sizeof(buf));
|
||||||
|
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
|
buf.memory = V4L2_MEMORY_MMAP;
|
||||||
|
buf.index = 0;
|
||||||
|
if (ioctl(videoDev, VIDIOC_DQBUF, &buf) == 0) {
|
||||||
|
if (ioctl(videoDev, VIDIOC_STREAMOFF, &type) == 0) {
|
||||||
|
// make RGB out of BGR:
|
||||||
|
int memsize = fmt.fmt.pix.width * fmt.fmt.pix.height;
|
||||||
|
unsigned char *mem1 = mem;
|
||||||
|
for (int i = 0; i < memsize; i++) {
|
||||||
|
unsigned char tmp = mem1[2];
|
||||||
|
mem1[2] = mem1[0];
|
||||||
|
mem1[0] = tmp;
|
||||||
|
mem1 += 3;
|
||||||
|
}
|
||||||
|
|
||||||
if (Quality < 0)
|
if (Quality < 0)
|
||||||
Quality = 100;
|
Quality = 100;
|
||||||
|
|
||||||
dsyslog("grabbing to %s %d %d %d", Jpeg ? "JPEG" : "PNM", Quality, vm.width, vm.height);
|
dsyslog("grabbing to %s %d %d %d", Jpeg ? "JPEG" : "PNM", Quality, fmt.fmt.pix.width, fmt.fmt.pix.height);
|
||||||
if (Jpeg) {
|
if (Jpeg) {
|
||||||
// convert to JPEG:
|
// convert to JPEG:
|
||||||
result = RgbToJpeg(mem, vm.width, vm.height, Size, Quality);
|
result = RgbToJpeg(mem, fmt.fmt.pix.width, fmt.fmt.pix.height, Size, Quality);
|
||||||
if (!result)
|
if (!result)
|
||||||
esyslog("ERROR: failed to convert image to JPEG");
|
esyslog("ERROR: failed to convert image to JPEG");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// convert to PNM:
|
// convert to PNM:
|
||||||
char buf[32];
|
char buf[32];
|
||||||
snprintf(buf, sizeof(buf), "P6\n%d\n%d\n255\n", vm.width, vm.height);
|
snprintf(buf, sizeof(buf), "P6\n%d\n%d\n255\n", fmt.fmt.pix.width, fmt.fmt.pix.height);
|
||||||
int l = strlen(buf);
|
int l = strlen(buf);
|
||||||
int bytes = memsize * 3;
|
int bytes = memsize * 3;
|
||||||
Size = l + bytes;
|
Size = l + bytes;
|
||||||
result = MALLOC(uchar, Size);
|
result = MALLOC(uchar, Size);
|
||||||
if (result) {
|
if (result) {
|
||||||
memcpy(result, buf, l);
|
memcpy(result, buf, l);
|
||||||
memcpy(result + l, mem, bytes);
|
memcpy(result + l, mem, bytes);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: failed to convert image to PNM");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: video device VIDIOC_STREAMOFF failed");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: video device VIDIOC_DQBUF failed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
esyslog("ERROR: failed to convert image to PNM");
|
esyslog("ERROR: video device VIDIOC_STREAMON failed");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: video device VIDIOC_QBUF failed");
|
||||||
|
munmap(mem, msize);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: failed to memmap video device");
|
||||||
}
|
}
|
||||||
munmap(mem, msize);
|
else
|
||||||
|
esyslog("ERROR: video device VIDIOC_QUERYBUF failed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
esyslog("ERROR: failed to memmap video device");
|
esyslog("ERROR: video device VIDIOC_REQBUFS failed");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: video device VIDIOC_S_FMT failed");
|
||||||
close(videoDev);
|
close(videoDev);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.h 1.47 2008/02/08 13:48:31 kls Exp $
|
* $Id: dvbdevice.h 1.47.1.1 2012/02/14 12:46:35 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
@ -15,8 +15,8 @@
|
|||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "dvbspu.h"
|
#include "dvbspu.h"
|
||||||
|
|
||||||
#if DVB_API_VERSION != 3
|
#if (DVB_API_VERSION << 8 | DVB_API_VERSION_MINOR) < 0x0300
|
||||||
#error VDR requires Linux DVB driver API version 3!
|
#error VDR requires Linux DVB driver API version 3.0 or higher!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MAXDVBDEVICES 8
|
#define MAXDVBDEVICES 8
|
||||||
|
8
eit.c
8
eit.c
@ -8,7 +8,7 @@
|
|||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* 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>.
|
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
||||||
*
|
*
|
||||||
* $Id: eit.c 1.126 2007/09/26 10:56:33 kls Exp $
|
* $Id: eit.c 1.126.1.1 2008/04/13 11:46:38 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eit.h"
|
#include "eit.h"
|
||||||
@ -300,9 +300,9 @@ cTDT::cTDT(const u_char *Data)
|
|||||||
if (diff > 2) {
|
if (diff > 2) {
|
||||||
mutex.Lock();
|
mutex.Lock();
|
||||||
if (abs(diff - lastDiff) < 3) {
|
if (abs(diff - lastDiff) < 3) {
|
||||||
isyslog("System Time = %s (%ld)", *TimeToString(loctim), loctim);
|
if (stime(&sattim) == 0)
|
||||||
isyslog("Local Time = %s (%ld)", *TimeToString(sattim), sattim);
|
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim);
|
||||||
if (stime(&sattim) < 0)
|
else
|
||||||
esyslog("ERROR while setting system time: %m");
|
esyslog("ERROR while setting system time: %m");
|
||||||
}
|
}
|
||||||
lastDiff = diff;
|
lastDiff = diff;
|
||||||
|
6
font.c
6
font.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: font.c 1.25 2008/03/01 10:19:41 kls Exp $
|
* $Id: font.c 1.25.1.1 2008/05/03 09:59:24 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "font.h"
|
#include "font.h"
|
||||||
@ -395,7 +395,7 @@ bool cFont::GetAvailableFontNames(cStringList *FontNames, bool Monospaced)
|
|||||||
FcFontSetDestroy(fontset);
|
FcFontSetDestroy(fontset);
|
||||||
FcPatternDestroy(pat);
|
FcPatternDestroy(pat);
|
||||||
FcObjectSetDestroy(os);
|
FcObjectSetDestroy(os);
|
||||||
FcFini();
|
//FcFini(); // older versions of fontconfig are broken - and FcInit() can be called more than once
|
||||||
FontNames->Sort();
|
FontNames->Sort();
|
||||||
}
|
}
|
||||||
return FontNames->Size() > 0;
|
return FontNames->Size() > 0;
|
||||||
@ -431,7 +431,7 @@ cString cFont::GetFontFileName(const char *FontName)
|
|||||||
esyslog("ERROR: no usable font found for '%s'", FontName);
|
esyslog("ERROR: no usable font found for '%s'", FontName);
|
||||||
FcPatternDestroy(pat);
|
FcPatternDestroy(pat);
|
||||||
free(fn);
|
free(fn);
|
||||||
FcFini();
|
//FcFini(); // older versions of fontconfig are broken - and FcInit() can be called more than once
|
||||||
}
|
}
|
||||||
return FontFileName;
|
return FontFileName;
|
||||||
}
|
}
|
||||||
|
4
i18n.c
4
i18n.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.c 1.319 2008/01/19 12:07:11 kls Exp $
|
* $Id: i18n.c 1.319.1.1 2008/09/06 12:21:17 kls Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -45,7 +45,7 @@ const char *LanguageCodeList[] = {
|
|||||||
"por",
|
"por",
|
||||||
"fra,fre",
|
"fra,fre",
|
||||||
"nor",
|
"nor",
|
||||||
"fin,smi",
|
"fin,suo",
|
||||||
"pol",
|
"pol",
|
||||||
"esl,spa",
|
"esl,spa",
|
||||||
"ell,gre",
|
"ell,gre",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* the Free Software Foundation; either version 2 of the License, or *
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
* (at your option) any later version. *
|
* (at your option) any later version. *
|
||||||
* *
|
* *
|
||||||
* $Id: si.h 1.17 2007/04/22 13:32:09 kls Exp $
|
* $Id: si.h 1.17.1.1 2008/09/06 12:40:49 kls Exp $
|
||||||
* *
|
* *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ enum TableId { TableIdPAT = 0x00, //program association section
|
|||||||
TableIdNIT_other = 0x41, //network information section, other network
|
TableIdNIT_other = 0x41, //network information section, other network
|
||||||
TableIdSDT = 0x42, //service description section
|
TableIdSDT = 0x42, //service description section
|
||||||
TableIdSDT_other = 0x46,
|
TableIdSDT_other = 0x46,
|
||||||
TableIdBAT = 0x46, //bouquet association section
|
TableIdBAT = 0x4A, //bouquet association section
|
||||||
TableIdEIT_presentFollowing = 0x4E, //event information section
|
TableIdEIT_presentFollowing = 0x4E, //event information section
|
||||||
TableIdEIT_presentFollowing_other = 0x4F,
|
TableIdEIT_presentFollowing_other = 0x4F,
|
||||||
//range from 0x50 to 0x5F
|
//range from 0x50 to 0x5F
|
||||||
|
26
po/it_IT.po
26
po/it_IT.po
@ -12,9 +12,9 @@ msgstr ""
|
|||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
|
"POT-Creation-Date: 2008-02-10 12:22+0100\n"
|
||||||
"PO-Revision-Date: 2008-03-08 21:06+0100\n"
|
"PO-Revision-Date: 2008-04-17 01:07+0100\n"
|
||||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||||
"Language-Team: Italian\n"
|
"Language-Team: Italian\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@ -221,7 +221,7 @@ msgid "Disk"
|
|||||||
msgstr "Disco"
|
msgstr "Disco"
|
||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "liberi"
|
msgstr "disponibile"
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "in chiaro"
|
msgstr "in chiaro"
|
||||||
@ -230,7 +230,7 @@ msgid "encrypted"
|
|||||||
msgstr "codificato"
|
msgstr "codificato"
|
||||||
|
|
||||||
msgid "auto"
|
msgid "auto"
|
||||||
msgstr "automatico"
|
msgstr "automatica"
|
||||||
|
|
||||||
msgid "Edit channel"
|
msgid "Edit channel"
|
||||||
msgstr "Modifica canale"
|
msgstr "Modifica canale"
|
||||||
@ -293,7 +293,7 @@ msgid "CoderateH"
|
|||||||
msgstr "CoderateH"
|
msgstr "CoderateH"
|
||||||
|
|
||||||
msgid "none"
|
msgid "none"
|
||||||
msgstr "nessuno"
|
msgstr "nessuna"
|
||||||
|
|
||||||
msgid "CoderateL"
|
msgid "CoderateL"
|
||||||
msgstr "CoderateL"
|
msgstr "CoderateL"
|
||||||
@ -404,20 +404,20 @@ msgid "What's on next?"
|
|||||||
msgstr "Prossimi programmi"
|
msgstr "Prossimi programmi"
|
||||||
|
|
||||||
msgid "Button$Next"
|
msgid "Button$Next"
|
||||||
msgstr "Prossimo"
|
msgstr "Prossimi"
|
||||||
|
|
||||||
msgid "Button$Now"
|
msgid "Button$Now"
|
||||||
msgstr "Adesso"
|
msgstr "Adesso"
|
||||||
|
|
||||||
msgid "Button$Schedule"
|
msgid "Button$Schedule"
|
||||||
msgstr "Programma"
|
msgstr "Programmi"
|
||||||
|
|
||||||
msgid "Can't switch channel!"
|
msgid "Can't switch channel!"
|
||||||
msgstr "Impossibile cambiare canale!"
|
msgstr "Impossibile cambiare canale!"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Schedule - %s"
|
msgid "Schedule - %s"
|
||||||
msgstr "Programma - %s"
|
msgstr "Programmi - %s"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "This event - %s"
|
msgid "This event - %s"
|
||||||
@ -500,7 +500,7 @@ msgid "Setup.OSD$Height"
|
|||||||
msgstr "Altezza OSD"
|
msgstr "Altezza OSD"
|
||||||
|
|
||||||
msgid "Setup.OSD$Message time (s)"
|
msgid "Setup.OSD$Message time (s)"
|
||||||
msgstr "Tempo del messaggio (s)"
|
msgstr "Durata del messaggio (s)"
|
||||||
|
|
||||||
msgid "Setup.OSD$Use small font"
|
msgid "Setup.OSD$Use small font"
|
||||||
msgstr "Utilizza caratteri piccoli"
|
msgstr "Utilizza caratteri piccoli"
|
||||||
@ -572,7 +572,7 @@ msgid "Setup.EPG$EPG linger time (min)"
|
|||||||
msgstr "Mostra vecchi dati EPG (min)"
|
msgstr "Mostra vecchi dati EPG (min)"
|
||||||
|
|
||||||
msgid "Setup.EPG$Set system time"
|
msgid "Setup.EPG$Set system time"
|
||||||
msgstr "Imposta orario automatico"
|
msgstr "Imposta orario di sistema"
|
||||||
|
|
||||||
msgid "Setup.EPG$Use time from transponder"
|
msgid "Setup.EPG$Use time from transponder"
|
||||||
msgstr "Utilizza orario da transponder"
|
msgstr "Utilizza orario da transponder"
|
||||||
@ -628,7 +628,7 @@ msgid "Setup.DVB$Use Dolby Digital"
|
|||||||
msgstr "Dolby Digital"
|
msgstr "Dolby Digital"
|
||||||
|
|
||||||
msgid "Setup.DVB$Update channels"
|
msgid "Setup.DVB$Update channels"
|
||||||
msgstr "Aggiorna i canali"
|
msgstr "Aggiornamento canali"
|
||||||
|
|
||||||
msgid "Setup.DVB$Audio languages"
|
msgid "Setup.DVB$Audio languages"
|
||||||
msgstr "Lingue audio"
|
msgstr "Lingue audio"
|
||||||
@ -739,7 +739,7 @@ msgid "Setup.Recording$Name instant recording"
|
|||||||
msgstr "Nome reg. immediata"
|
msgstr "Nome reg. immediata"
|
||||||
|
|
||||||
msgid "Setup.Recording$Instant rec. time (min)"
|
msgid "Setup.Recording$Instant rec. time (min)"
|
||||||
msgstr "Tempo reg. immediata (min)"
|
msgstr "Durata reg. immediata (min)"
|
||||||
|
|
||||||
msgid "Setup.Recording$Max. video file size (MB)"
|
msgid "Setup.Recording$Max. video file size (MB)"
|
||||||
msgstr "Dim. massima file video (MB)"
|
msgstr "Dim. massima file video (MB)"
|
||||||
@ -899,7 +899,7 @@ msgid "Plugin"
|
|||||||
msgstr "Plugin"
|
msgstr "Plugin"
|
||||||
|
|
||||||
msgid "Up/Dn for new location - OK to move"
|
msgid "Up/Dn for new location - OK to move"
|
||||||
msgstr "Su/Giù per nuova posizione - OK per muovere"
|
msgstr "Su/Giù per nuova posizione - OK per spostare"
|
||||||
|
|
||||||
msgid "Channel locked (recording)!"
|
msgid "Channel locked (recording)!"
|
||||||
msgstr "Canale bloccato (in registrazione)!"
|
msgstr "Canale bloccato (in registrazione)!"
|
||||||
|
10
recording.c
10
recording.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.c 1.162 2008/02/24 10:28:53 kls Exp $
|
* $Id: recording.c 1.162.1.2 2012/02/14 13:57:25 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -509,8 +509,8 @@ cRecording::cRecording(cTimer *Timer, const cEvent *Event)
|
|||||||
Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
|
Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
|
||||||
Subtitle = SubtitleBuffer;
|
Subtitle = SubtitleBuffer;
|
||||||
}
|
}
|
||||||
char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE);
|
const char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE);
|
||||||
char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
|
const char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
|
||||||
if (macroTITLE || macroEPISODE) {
|
if (macroTITLE || macroEPISODE) {
|
||||||
name = strdup(Timer->File());
|
name = strdup(Timer->File());
|
||||||
name = strreplace(name, TIMERMACRO_TITLE, Title);
|
name = strreplace(name, TIMERMACRO_TITLE, Title);
|
||||||
@ -551,7 +551,7 @@ cRecording::cRecording(const char *FileName)
|
|||||||
sortBuffer = NULL;
|
sortBuffer = NULL;
|
||||||
fileName = strdup(FileName);
|
fileName = strdup(FileName);
|
||||||
FileName += strlen(VideoDirectory) + 1;
|
FileName += strlen(VideoDirectory) + 1;
|
||||||
char *p = strrchr(FileName, '/');
|
const char *p = strrchr(FileName, '/');
|
||||||
|
|
||||||
name = NULL;
|
name = NULL;
|
||||||
info = new cRecordingInfo;
|
info = new cRecordingInfo;
|
||||||
@ -1022,7 +1022,7 @@ void cRecordings::DelByName(const char *FileName)
|
|||||||
if (recording) {
|
if (recording) {
|
||||||
cThreadLock DeletedRecordingsLock(&DeletedRecordings);
|
cThreadLock DeletedRecordingsLock(&DeletedRecordings);
|
||||||
Del(recording, false);
|
Del(recording, false);
|
||||||
char *ext = strrchr(recording->FileName(), '.');
|
char *ext = strrchr(recording->fileName, '.');
|
||||||
if (ext) {
|
if (ext) {
|
||||||
strncpy(ext, DELEXT, strlen(ext));
|
strncpy(ext, DELEXT, strlen(ext));
|
||||||
recording->fileSizeMB = DirSizeMB(recording->FileName());
|
recording->fileSizeMB = DirSizeMB(recording->FileName());
|
||||||
|
4
remux.h
4
remux.h
@ -4,14 +4,12 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: remux.h 1.17 2007/09/02 10:19:06 kls Exp $
|
* $Id: remux.h 1.17.1.1 2008/09/06 14:34:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __REMUX_H
|
#ifndef __REMUX_H
|
||||||
#define __REMUX_H
|
#define __REMUX_H
|
||||||
|
|
||||||
#include <time.h> //XXX FIXME: DVB/linux/dvb/dmx.h should include <time.h> itself!!!
|
|
||||||
#include <linux/dvb/dmx.h>
|
|
||||||
#include "ringbuffer.h"
|
#include "ringbuffer.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
|
100
sources.conf
100
sources.conf
@ -19,29 +19,34 @@
|
|||||||
|
|
||||||
# Europe
|
# Europe
|
||||||
|
|
||||||
S5E Sirius 2/3
|
S3E Telecom 2C
|
||||||
|
S4E Eurobird 4
|
||||||
|
S5E Sirius 4
|
||||||
S7E Eutelsat W3A
|
S7E Eutelsat W3A
|
||||||
|
S9E Eurobird 9
|
||||||
S10E Eutelsat W1
|
S10E Eutelsat W1
|
||||||
S13E Hotbird 1-3/6/7A
|
S13E Hotbird 6/7A/8
|
||||||
S16E Eutelsat W2
|
S16E Eutelsat W2
|
||||||
S19.2E Astra 1B/C/E/F/G/H/2C
|
S19.2E Astra F/G/H/KR/L
|
||||||
S21.0E Afristar 1
|
S21.0E Afristar 1
|
||||||
S21.6E Eutelsat W6
|
S21.6E Eutelsat W6
|
||||||
S23.5E Astra 1D 3A
|
S23.5E Astra 1E/3A
|
||||||
S26E Arabsat 2D/2C/3A
|
S25.5E Eurobird 2
|
||||||
|
S26E Badr 3/4/6
|
||||||
S28.2E Astra 2D/A/B
|
S28.2E Astra 2D/A/B
|
||||||
S28.5E Eurobird 1 & Astra 2A/B/D
|
S28.5E Eurobird 1 & Astra 2A/B/C/D
|
||||||
S30.5E Arabsat 2B
|
S30.5E Arabsat 2B
|
||||||
|
S31.5E Astra 1D/5A
|
||||||
S33E Eurobird 3 & Intelsat 802
|
S33E Eurobird 3 & Intelsat 802
|
||||||
S36E Eutelsat W4 & Sesat
|
S36E Eutelsat W4 & Sesat
|
||||||
S38E Paksat 1
|
S38E Paksat 1
|
||||||
S39E Hellas Sat 2
|
S39E Hellas Sat 2
|
||||||
S40E Express AM1
|
S40E Express AM1
|
||||||
S42E Turksat 1C/2A
|
S42E Turksat 2A/3A
|
||||||
S45E Intelsat 12
|
S45E Intelsat 12
|
||||||
S49E Yamal 202
|
S49E Yamal 202
|
||||||
S53E Express AM 22
|
S53E Express AM 22
|
||||||
S55E Insat 3E & Intelsat 702
|
S55E Insat 3E
|
||||||
S56E Bonum 1
|
S56E Bonum 1
|
||||||
S57E NSS 703
|
S57E NSS 703
|
||||||
S60E Intelsat 904
|
S60E Intelsat 904
|
||||||
@ -54,10 +59,10 @@ S72E Intelsat 4
|
|||||||
|
|
||||||
# Asia
|
# Asia
|
||||||
|
|
||||||
S74E Insat 3C & Edusat
|
S74E Insat 3C/4CR & Edusat
|
||||||
S75E LMI 1
|
S75E ABS 1
|
||||||
S76.5E Telstar 10
|
S76.5E Telstar 10
|
||||||
S78.5E Thaicom 2/3
|
S78.5E Thaicom 2/5
|
||||||
S80E Express AM2
|
S80E Express AM2
|
||||||
S83E Insat 2E/3B/4A
|
S83E Insat 2E/3B/4A
|
||||||
S85.2E Intelsat 709
|
S85.2E Intelsat 709
|
||||||
@ -65,14 +70,17 @@ S87.5E Chinastar 1
|
|||||||
S88E ST 1
|
S88E ST 1
|
||||||
S90E Yamal 201
|
S90E Yamal 201
|
||||||
S91.5E Measat 1
|
S91.5E Measat 1
|
||||||
S93.5E Insat 3A
|
S92.2E Chinasat 9
|
||||||
|
S93.5E Insat 3A/4B
|
||||||
S95E NSS 6
|
S95E NSS 6
|
||||||
S96.5E Express AM 11
|
S96.5E Express AM 33
|
||||||
|
S98.5E Protostar 1
|
||||||
S100.5E Asiasat 2
|
S100.5E Asiasat 2
|
||||||
S103E Express A2
|
S103E Express A2
|
||||||
|
S105E Asiastar
|
||||||
S105.5E Asiasat 3S
|
S105.5E Asiasat 3S
|
||||||
S107.7E Cakrawarta 1
|
S107.7E Cakrawarta 1
|
||||||
S108E Telkom 1 & AAP 1
|
S108E Telkom 1 & NSS 11
|
||||||
S110E N-Sat 110 & BSAT 1A/2A
|
S110E N-Sat 110 & BSAT 1A/2A
|
||||||
S110.5E Sinosat 1
|
S110.5E Sinosat 1
|
||||||
S113E Palapa C2 & Koreasat 2
|
S113E Palapa C2 & Koreasat 2
|
||||||
@ -81,38 +89,38 @@ S118E Telkom 2
|
|||||||
S120E Thaicom 1A
|
S120E Thaicom 1A
|
||||||
S122.2E Asiasat 4
|
S122.2E Asiasat 4
|
||||||
S124E JCSAT 4a
|
S124E JCSAT 4a
|
||||||
|
S125E Sinosat 3
|
||||||
S128E JCSAT 3
|
S128E JCSAT 3
|
||||||
S132E N-Star A
|
S132E Vinasat 1 & JCSAT5a
|
||||||
S134E Apstar 6
|
S134E Apstar 6
|
||||||
S136E N-Star B
|
|
||||||
S138E Telstar 18
|
S138E Telstar 18
|
||||||
S140E Express AM 3
|
S140E Express AM 3
|
||||||
S144E Superbird C
|
S144E Superbird C
|
||||||
S146E Agila 2
|
S146E Agila 2
|
||||||
S148E Measat 2
|
S148E Measat 2
|
||||||
S150E JCSAT R
|
S150E JCSAT R
|
||||||
S152E Optus B3
|
S152E Optus D2
|
||||||
S154E JCSAT 2A
|
S154E JCSAT 2A
|
||||||
S156E Optus C1
|
S156E Optus C1
|
||||||
S158E Superbird A
|
S158E Superbird A
|
||||||
S160E Optus B1
|
S160E Optus D1
|
||||||
S162E Superbird B2
|
S162E Superbird B2
|
||||||
S164E Optus A3
|
S164E Optus B3
|
||||||
S166E Intelsat 8
|
S166E Intelsat 8
|
||||||
S169E Intelsat 2
|
S169E Intelsat 2
|
||||||
S172E AMC 23
|
S172E GE 23
|
||||||
S180E Intelsat 701
|
S180E Intelsat 701
|
||||||
S177W NSS 5
|
S177W NSS 5
|
||||||
|
|
||||||
# Atlantic
|
# Atlantic
|
||||||
|
|
||||||
S1W Thor 2/3 & Intelsat 10-02
|
S1W Thor 3/5 & Intelsat 10-02
|
||||||
S4W Amos 1/2
|
S4W Amos 1/2/3
|
||||||
S5W Atlantic Bird 3
|
S5W Atlantic Bird 3
|
||||||
S7W Nilesat 101 & 102
|
S7W Nilesat 101/102 & Atlantic Bird 4
|
||||||
S8W Telecom 2D & Atlantic Bird 2
|
S8W Telecom 2D & Atlantic Bird 2
|
||||||
S11W Express A3
|
S11W Express A3
|
||||||
S12.5W Atlantic Bird 2
|
S12.5W Atlantic Bird 1
|
||||||
S14W Express A4
|
S14W Express A4
|
||||||
S15W Telstar 12
|
S15W Telstar 12
|
||||||
S18W Intelsat 901
|
S18W Intelsat 901
|
||||||
@ -123,9 +131,9 @@ S27.5W Intelsat 907
|
|||||||
S30W Hispasat 1C/1D
|
S30W Hispasat 1C/1D
|
||||||
S31.5W Intelsat 801
|
S31.5W Intelsat 801
|
||||||
S34.5W Intelsat 903
|
S34.5W Intelsat 903
|
||||||
S37.5W Telstar 11 & AMC 12
|
S37.5W NSS 10
|
||||||
S40.5W NSS 806
|
S40.5W NSS 806
|
||||||
S43W Intelsat 3R/6B
|
S43W Intelsat 3R/11
|
||||||
S45W Intelsat 1R
|
S45W Intelsat 1R
|
||||||
S50W Intelsat 705
|
S50W Intelsat 705
|
||||||
S53W Intelsat 707
|
S53W Intelsat 707
|
||||||
@ -137,47 +145,45 @@ S61W Amazonas
|
|||||||
|
|
||||||
S61.5W Echostar 3 & Rainbow 1
|
S61.5W Echostar 3 & Rainbow 1
|
||||||
S63W Estrelo de Sul 1
|
S63W Estrelo de Sul 1
|
||||||
S65W Brasilsat B2
|
S65W Star One C1
|
||||||
S70W Brasilsat B1
|
S70W Star One C2
|
||||||
S72W Nahuel 1 & AMC 6
|
S72W Nahuel 1 & AMC 6
|
||||||
S72.5W DirecTV 1
|
S72.5W DirecTV 1R & Echostar 6
|
||||||
S74W SBS 6
|
S74W Horizons 2
|
||||||
S77W Echostar 4
|
S77W Echostar 4 & Galaxy 4R
|
||||||
S79W AMC5
|
S79W AMC5
|
||||||
S79.5W Nimiq 3
|
|
||||||
S82W Nimiq 2
|
S82W Nimiq 2
|
||||||
S83W AMC 9
|
S83W AMC 9
|
||||||
S84W Brasilsat B3
|
S84W Brasilsat B3/4
|
||||||
S85W AMC 2
|
S85W AMC 16
|
||||||
S85.1W XM 3
|
S85.1W XM 3
|
||||||
S87W AMC3
|
S87W AMC3
|
||||||
S89W Galaxy 28
|
S89W Galaxy 28
|
||||||
S91W Galaxy 11 & Nimiq 1
|
S91W Galaxy 11/17 & Nimiq 1
|
||||||
S91.5W DirecTV 2
|
S92W Brasilsat B2
|
||||||
S92W Brasilsat B4
|
|
||||||
S93W Galaxy 26
|
S93W Galaxy 26
|
||||||
S95W Galaxy 3C
|
S95W Galaxy 3C
|
||||||
S97W Galaxy 25
|
S97W Galaxy 25
|
||||||
S99W Galaxy 4R
|
S99W Galaxy 16
|
||||||
S99.2W Spaceway 2
|
S99.2W Spaceway 2 & DirecTV 11
|
||||||
S101W DirecTV 1R/4S/8 & AMC4
|
S101W DirecTV 4S/8 & AMC 2/4
|
||||||
S103W AMC1
|
S103W AMC1
|
||||||
S105W AMC15
|
S105W AMC15/18
|
||||||
S107.3W Anik F1/F1R
|
S107.3W Anik F1/F1R
|
||||||
S110W DirecTV 5 & Echostar 6/8/10
|
S110W DirecTV 5 & Echostar 8/10
|
||||||
S111.1W Anik F2
|
S111.1W Anik F2
|
||||||
S113W Solidaridad 2
|
S113W SatMex 6
|
||||||
S119W Echostar 7 & DirecTV 7S
|
S116.8W SatMex 5
|
||||||
|
S119W Anik F3 & Echostar 7 & DirecTV 7S
|
||||||
S121W Echostar 9 & Galaxy 23
|
S121W Echostar 9 & Galaxy 23
|
||||||
S123W Galaxy 10R
|
S123W Galaxy 18
|
||||||
S125W Galaxy 14
|
S125W Galaxy 14
|
||||||
S127W Galaxy 13/Horizons 1
|
S127W Galaxy 13/Horizons 1
|
||||||
S129W Echostar 5 & Galaxy 27
|
S129W Echostar 5 & Galaxy 27
|
||||||
S131W AMC 11
|
S131W AMC 11
|
||||||
S133W Galaxy15/1R
|
S133W Galaxy15
|
||||||
S135W AMC 10
|
S135W AMC 10
|
||||||
S137W AMC 7
|
S137W AMC 7
|
||||||
S138.5W Echostar 10
|
|
||||||
S139W AMC 8
|
S139W AMC 8
|
||||||
S148W Echostar 1/2
|
S148W Echostar 1/2
|
||||||
|
|
||||||
|
17
svdrp.c
17
svdrp.c
@ -10,7 +10,7 @@
|
|||||||
* and interact with the Video Disk Recorder - or write a full featured
|
* and interact with the Video Disk Recorder - or write a full featured
|
||||||
* graphical interface that sits on top of an SVDRP connection.
|
* graphical interface that sits on top of an SVDRP connection.
|
||||||
*
|
*
|
||||||
* $Id: svdrp.c 1.109 2008/02/17 13:36:01 kls Exp $
|
* $Id: svdrp.c 1.109.1.3 2012/02/14 13:55:52 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "svdrp.h"
|
#include "svdrp.h"
|
||||||
@ -736,7 +736,7 @@ void cSVDRP::CmdGRAB(const char *Option)
|
|||||||
char *strtok_next;
|
char *strtok_next;
|
||||||
FileName = strtok_r(p, delim, &strtok_next);
|
FileName = strtok_r(p, delim, &strtok_next);
|
||||||
// image type:
|
// image type:
|
||||||
char *Extension = strrchr(FileName, '.');
|
const char *Extension = strrchr(FileName, '.');
|
||||||
if (Extension) {
|
if (Extension) {
|
||||||
if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0)
|
if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0)
|
||||||
Jpeg = true;
|
Jpeg = true;
|
||||||
@ -795,16 +795,17 @@ void cSVDRP::CmdGRAB(const char *Option)
|
|||||||
char RealFileName[PATH_MAX];
|
char RealFileName[PATH_MAX];
|
||||||
if (FileName) {
|
if (FileName) {
|
||||||
if (grabImageDir) {
|
if (grabImageDir) {
|
||||||
cString s;
|
cString s(FileName);
|
||||||
char *slash = strrchr(FileName, '/');
|
FileName = s;
|
||||||
|
const char *slash = strrchr(FileName, '/');
|
||||||
if (!slash) {
|
if (!slash) {
|
||||||
s = AddDirectory(grabImageDir, FileName);
|
s = AddDirectory(grabImageDir, FileName);
|
||||||
FileName = s;
|
FileName = s;
|
||||||
}
|
}
|
||||||
slash = strrchr(FileName, '/'); // there definitely is one
|
slash = strrchr(FileName, '/'); // there definitely is one
|
||||||
*slash = 0;
|
cString t(s);
|
||||||
char *r = realpath(FileName, RealFileName);
|
t.Truncate(slash - FileName);
|
||||||
*slash = '/';
|
char *r = realpath(t, RealFileName);
|
||||||
if (!r) {
|
if (!r) {
|
||||||
LOG_ERROR_STR(FileName);
|
LOG_ERROR_STR(FileName);
|
||||||
Reply(501, "Invalid file name \"%s\"", FileName);
|
Reply(501, "Invalid file name \"%s\"", FileName);
|
||||||
@ -1606,7 +1607,7 @@ bool cSVDRP::Process(void)
|
|||||||
char buffer[BUFSIZ];
|
char buffer[BUFSIZ];
|
||||||
gethostname(buffer, sizeof(buffer));
|
gethostname(buffer, sizeof(buffer));
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
Reply(220, "%s SVDRP VideoDiskRecorder %s; %s", buffer, VDRVERSION, *TimeToString(now));
|
Reply(220, "%s SVDRP VideoDiskRecorder %s; %s; %s", buffer, VDRVERSION, *TimeToString(now), cCharSetConv::SystemCharacterTable() ? cCharSetConv::SystemCharacterTable() : "UTF-8");
|
||||||
}
|
}
|
||||||
if (NewConnection)
|
if (NewConnection)
|
||||||
lastActivity = time(NULL);
|
lastActivity = time(NULL);
|
||||||
|
13
thread.c
13
thread.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: thread.c 1.64 2008/02/15 14:17:42 kls Exp $
|
* $Id: thread.c 1.64.1.1 2008/08/16 11:00:40 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
@ -24,11 +24,12 @@ static bool GetAbsTime(struct timespec *Abstime, int MillisecondsFromNow)
|
|||||||
{
|
{
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
if (gettimeofday(&now, NULL) == 0) { // get current time
|
if (gettimeofday(&now, NULL) == 0) { // get current time
|
||||||
now.tv_usec += MillisecondsFromNow * 1000; // add the timeout
|
now.tv_sec += MillisecondsFromNow / 1000; // add full seconds
|
||||||
while (now.tv_usec >= 1000000) { // take care of an overflow
|
now.tv_usec += (MillisecondsFromNow % 1000) * 1000; // add microseconds
|
||||||
now.tv_sec++;
|
if (now.tv_usec >= 1000000) { // take care of an overflow
|
||||||
now.tv_usec -= 1000000;
|
now.tv_sec++;
|
||||||
}
|
now.tv_usec -= 1000000;
|
||||||
|
}
|
||||||
Abstime->tv_sec = now.tv_sec; // seconds
|
Abstime->tv_sec = now.tv_sec; // seconds
|
||||||
Abstime->tv_nsec = now.tv_usec * 1000; // nano seconds
|
Abstime->tv_nsec = now.tv_usec * 1000; // nano seconds
|
||||||
return true;
|
return true;
|
||||||
|
3
timers.c
3
timers.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: timers.c 1.73 2008/02/16 14:47:40 kls Exp $
|
* $Id: timers.c 1.73.1.1 2008/04/13 12:47:12 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
@ -92,6 +92,7 @@ cTimer::cTimer(const cTimer &Timer)
|
|||||||
channel = NULL;
|
channel = NULL;
|
||||||
aux = NULL;
|
aux = NULL;
|
||||||
event = NULL;
|
event = NULL;
|
||||||
|
flags = tfNone;
|
||||||
*this = Timer;
|
*this = Timer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
vdr.c
7
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/vdr
|
* The project's page is at http://www.cadsoft.de/vdr
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 1.313 2008/03/14 13:22:39 kls Exp $
|
* $Id: vdr.c 1.313.1.1 2008/09/06 11:07:52 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -141,7 +141,6 @@ static bool SetKeepCaps(bool On)
|
|||||||
|
|
||||||
static void SignalHandler(int signum)
|
static void SignalHandler(int signum)
|
||||||
{
|
{
|
||||||
isyslog("caught signal %d", signum);
|
|
||||||
switch (signum) {
|
switch (signum) {
|
||||||
case SIGPIPE:
|
case SIGPIPE:
|
||||||
break;
|
break;
|
||||||
@ -1288,9 +1287,11 @@ Exit:
|
|||||||
ReportEpgBugFixStats();
|
ReportEpgBugFixStats();
|
||||||
if (WatchdogTimeout > 0)
|
if (WatchdogTimeout > 0)
|
||||||
dsyslog("max. latency time %d seconds", MaxLatencyTime);
|
dsyslog("max. latency time %d seconds", MaxLatencyTime);
|
||||||
isyslog("exiting, exit code %d", ShutdownHandler.GetExitCode());
|
if (LastSignal)
|
||||||
|
isyslog("caught signal %d", LastSignal);
|
||||||
if (ShutdownHandler.EmergencyExitRequested())
|
if (ShutdownHandler.EmergencyExitRequested())
|
||||||
esyslog("emergency exit!");
|
esyslog("emergency exit!");
|
||||||
|
isyslog("exiting, exit code %d", ShutdownHandler.GetExitCode());
|
||||||
if (SysLogLevel > 0)
|
if (SysLogLevel > 0)
|
||||||
closelog();
|
closelog();
|
||||||
if (HasStdin)
|
if (HasStdin)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user