summaryrefslogtreecommitdiff
path: root/dvbdevice.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2005-02-27 18:00:00 +0100
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2005-02-27 18:00:00 +0100
commit05402c740765e6e0ca2aaf1760c77d9e3d3ed5a5 (patch)
tree366d8a8c2a637d83c406fa0debd41b8a701fada5 /dvbdevice.c
parentdbacda8274e2d76b0ea42f90b94353b672fa9343 (diff)
downloadvdr-patch-lnbsharing-05402c740765e6e0ca2aaf1760c77d9e3d3ed5a5.tar.gz
vdr-patch-lnbsharing-05402c740765e6e0ca2aaf1760c77d9e3d3ed5a5.tar.bz2
Version 1.3.22vdr-1.3.22
- Removed some unneeded code and fixed access to unallocated memory in cEvent::FixEpgBugs() (thanks to Wolfgang Rohdewald). - Avoiding unnecessary calls to SetPid() in cDvbDevice::SetAudioTrackDevice() (thanks to Marco Schlüßler). - No longer calling EnsureAudioTrack() in cDevice::SetChannel() if a Transfer Mode is started, to avoid setting the audio PID on the primary device (thanks to Marco Schlüßler for pointing this out). - Replaced the call to system("sync") in SpinUpDisk() with fdatasync(f) to avoid problems on NPTL systems (thanks to Chris Warren for pointing this out). - Increased POLLTIMEOUTS_BEFORE_DEVICECLEAR in transfer.c to 6 to avoid problems with the larger buffer reserve (thanks to Marco Schlüßler). - Fixed the call to SetVideoFormat() in cDvbDevice::cDvbDevice() (parameter is _bool_). - Added support for setting the video display mode (thanks to Marco Schlüßler). - The new setup option "DVB/Video display format" can be used to define which display format to use for playing wide screen video on a 4:3 tv set. - Changed MAXDPIDS to 16 (8xAC3 + 8xDTS) (thanks to Werner Fink for pointing this out). - Completed Dutch language texts (thanks to Hans Dingemans). - Added 'smi' to the Finnish language codes (thanks to Rolf Ahrenberg). - Fixed ensuring there is a current audio track in case there is only one track (thanks to Werner Fink for reporting this one). - Improved automatic audio track selection. - Keeping the track language codes and descriptions in Transfer Mode (thanks to Luca Olivetti). - Fixed handling repeated kAudio keys. - Improved displaying the the current audio track in the ST:TNG channel display.
Diffstat (limited to 'dvbdevice.c')
-rw-r--r--dvbdevice.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/dvbdevice.c b/dvbdevice.c
index 741848a..c231122 100644
--- a/dvbdevice.c
+++ b/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.120 2005/02/13 14:26:37 kls Exp $
+ * $Id: dvbdevice.c 1.124 2005/02/20 13:35:28 kls Exp $
*/
#include "dvbdevice.h"
@@ -402,7 +402,7 @@ cDvbDevice::cDvbDevice(int n)
// Video format:
- SetVideoFormat(Setup.VideoFormat ? VIDEO_FORMAT_16_9 : VIDEO_FORMAT_4_3);
+ SetVideoFormat(Setup.VideoFormat);
// We only check the devices that must be present - the others will be checked before accessing them://XXX
@@ -599,10 +599,35 @@ bool cDvbDevice::GrabImage(const char *FileName, bool Jpeg, int Quality, int Siz
return false;
}
+void cDvbDevice::SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat)
+{
+ cDevice::SetVideoDisplayFormat(VideoDisplayFormat);
+ if (HasDecoder()) {
+ if (Setup.VideoFormat) {
+ CHECK(ioctl(fd_video, VIDEO_SET_DISPLAY_FORMAT, VIDEO_CENTER_CUT_OUT));
+ }
+ else {
+ switch (VideoDisplayFormat) {
+ case vdfPanAndScan:
+ CHECK(ioctl(fd_video, VIDEO_SET_DISPLAY_FORMAT, VIDEO_PAN_SCAN));
+ break;
+ case vdfLetterBox:
+ CHECK(ioctl(fd_video, VIDEO_SET_DISPLAY_FORMAT, VIDEO_LETTER_BOX));
+ break;
+ case vdfCenterCutOut:
+ CHECK(ioctl(fd_video, VIDEO_SET_DISPLAY_FORMAT, VIDEO_CENTER_CUT_OUT));
+ break;
+ }
+ }
+ }
+}
+
void cDvbDevice::SetVideoFormat(bool VideoFormat16_9)
{
- if (HasDecoder())
+ if (HasDecoder()) {
CHECK(ioctl(fd_video, VIDEO_SET_FORMAT, VideoFormat16_9 ? VIDEO_FORMAT_16_9 : VIDEO_FORMAT_4_3));
+ SetVideoDisplayFormat(eVideoDisplayFormat(Setup.VideoDisplayFormat));
+ }
}
eVideoSystem cDvbDevice::GetVideoSystem(void)
@@ -872,7 +897,7 @@ void cDvbDevice::SetAudioTrackDevice(eTrackType Type)
const tTrackId *TrackId = GetTrack(Type);
if (TrackId && TrackId->id) {
if (IS_AUDIO_TRACK(Type)) {
- if (pidHandles[ptAudio].pid) {
+ if (pidHandles[ptAudio].pid && pidHandles[ptAudio].pid != TrackId->id) {
pidHandles[ptAudio].pid = TrackId->id;
SetPid(&pidHandles[ptAudio], ptAudio, true);
}