mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Added a poll to cDvbDevice::PlayVideo() and cDvbDevice::PlayAudio() to avoid excessive CPU load
This commit is contained in:
parent
7b2085b575
commit
7470253c60
5
HISTORY
5
HISTORY
@ -5849,10 +5849,13 @@ Video Disk Recorder Revision History
|
|||||||
the patch from ftp://ftp.cadsoft.de/vdr/Developer/av7110_v4ldvb_api5_audiobuf_test_1.diff
|
the patch from ftp://ftp.cadsoft.de/vdr/Developer/av7110_v4ldvb_api5_audiobuf_test_1.diff
|
||||||
to the driver (thanks to Oliver Endriss).
|
to the driver (thanks to Oliver Endriss).
|
||||||
|
|
||||||
2008-12-22: Version 1.7.3
|
2008-12-28: Version 1.7.3
|
||||||
|
|
||||||
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
|
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
|
||||||
- Fixed handling the 'pointer field' in generating and parsing PAT/PMT (thanks to
|
- Fixed handling the 'pointer field' in generating and parsing PAT/PMT (thanks to
|
||||||
Frank Schmirler).
|
Frank Schmirler).
|
||||||
- Fixed handling modulation types for DVB-S transponders when processing the NIT.
|
- Fixed handling modulation types for DVB-S transponders when processing the NIT.
|
||||||
- Changed cDvbDevice::GrabImage() to use V4L2 (thanks to Marco Schlüßler).
|
- Changed cDvbDevice::GrabImage() to use V4L2 (thanks to Marco Schlüßler).
|
||||||
|
- Added a poll to cDvbDevice::PlayVideo() and cDvbDevice::PlayAudio() to avoid
|
||||||
|
excessive CPU load (this is just a makeshift solution until the FF DVB cards
|
||||||
|
can play TS directly).
|
||||||
|
10
dvbdevice.c
10
dvbdevice.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: dvbdevice.c 2.7 2008/12/22 10:24:10 kls Exp $
|
* $Id: dvbdevice.c 2.8 2008/12/28 10:59:51 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -1303,6 +1303,10 @@ int cDvbDevice::PlayVideo(const uchar *Data, int Length)
|
|||||||
int w;
|
int w;
|
||||||
do {
|
do {
|
||||||
w = WriteAllOrNothing(fd_video, Data, Length, 1000, 10);
|
w = WriteAllOrNothing(fd_video, Data, Length, 1000, 10);
|
||||||
|
if (w < 0 && errno == EAGAIN) {
|
||||||
|
cPoller Poller(fd_video, true);
|
||||||
|
Poller.Poll(200);
|
||||||
|
}
|
||||||
} while (w != Length);
|
} while (w != Length);
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
@ -1312,6 +1316,10 @@ int cDvbDevice::PlayAudio(const uchar *Data, int Length, uchar Id)
|
|||||||
int w;
|
int w;
|
||||||
do {
|
do {
|
||||||
w = WriteAllOrNothing(fd_audio, Data, Length, 1000, 10);
|
w = WriteAllOrNothing(fd_audio, Data, Length, 1000, 10);
|
||||||
|
if (w < 0 && errno == EAGAIN) {
|
||||||
|
cPoller Poller(fd_audio, true);
|
||||||
|
Poller.Poll(200);
|
||||||
|
}
|
||||||
} while (w != Length);
|
} while (w != Length);
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user