Gerd Knorr replied:
VBI device readable in select() and returns EIO for ioctl DQBUF (...) does de-queue a buffer although it returns an error code.
Its done intentionally.
If I understand you correctly you want to provide the buffer because the data might be useful to the app - but how? I mean, we don't know what data is actually in the buffer, i.e. there might be no new data in the buffer at all, or a partial frame and the rest data from 10 frames ago, or something else entirely. From viewpoint of a VBI app, I wouldn't want to touch such a buffer with a 10ft pole :)
Maybe better use something like V4L2_BUF_FLAG_IOERROR instead?
Most intuitive to me would be to not set the DONE flag and set an IOERROR flag instead. If the data isn't useful, EIO without dequeing a buffer would suffice (causes less coding overhead for the app.) bye, -tom