Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: Are frontend events queued?
On Wed, Jul 21, 2004 at 07:31:36PM +0200, Wolfgang Fritz wrote:
> Hello,
>
> I'm trying to get some facts about the infamous "video data stream
> broken" error in VDR.
>
> The following modified code from VDR-1.3.10/dvbdevice.c cDvbTuner::Action
>
> active = true;
> while (active) {
> ....
> if (tunerStatus == tsTuned) {
> fe_status_t status = fe_status_t(0);
> CHECK(ioctl(fd_frontend, FE_READ_STATUS, &status));
> if (status & FE_HAS_LOCK) {
> tunerStatus = tsLocked;
> dsyslog ("Frontend %d locked", cardIndex);
> }
> }
> if (tunerStatus != tsIdle) {
> dvb_frontend_event event;
> if (ioctl(fd_frontend, FE_GET_EVENT, &event) == 0) {
> dsyslog ("Event on frontend %d: %02x", cardIndex, event.status);
> if (event.status & FE_REINIT) {
> tunerStatus = tsSet;
> esyslog("ERROR: frontend %d was reinitialized -
> re-tuning", cardIndex);
> continue;
> }
> }
> }
> ....
> bool fast = (tunerStatus == tsTuned) || (ciHandler &&
> (time(NULL) - startTime < 20));
> newSet.TimedWait(mutex, fast ? 100 : 1000);
> }
>
> sometimes gives the following output:
>
> Jul 21 19:06:21 vdr vdr[1697]: Event on frontend 1: 00
> Jul 21 19:06:21 vdr vdr[1697]: Frontend 1 locked
> Jul 21 19:06:21 vdr vdr[1697]: Event on frontend 1: 03
> Jul 21 19:06:22 vdr vdr[1697]: Event on frontend 1: 1f
>
> What does this mean?
>
> - Did the frontend really lose lock for a short time?
>
> Or
>
> - Are the frontend events queued so that the event "03"
> in fact occured before the "Frontend 1 locked"?
Events are queued. You are supposed to use poll() and read
events as soon as they are generated, or let FE_GET_EVENT
block waiting for events. To fix up vdr you could also
open the frontend with O_NONBLOCK and loop until
FE_GET_EVENT returns -EGAIN, discarding old events.
Once upon a time szap did something like that:
http://linuxtv.org/cgi-bin/cvsweb.cgi/DVB/apps/szap/szap.c?rev=1.3.2.1&content-type=text/plain
Johannes
Home |
Main Index |
Thread Index