Hi all,
I'm trying to write a program that display still pictures from I-frames using the image decoder on
a dreambox with flash firmware = 1.08.
This firmware seems to have an earlier version than DVB API 3. Is this correct ???
I've noticed that VIDEO_STILLPICTURE is not used in displayIFrame function (file decoder.cpp) of enigma
application. Does this mean VIDEO_STILLPICTURE ioctl is not supported by the dreambox driver ???
What should be the state of Video driver when calling VIDEO_STILLPICTURE ioctl ???
I've tried:
fd = open("/dev/dvb/card0/video0",O_RDWR|O_NONBLOCK);
ioctl(fd, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_MEMORY);
videoSetBlank(fd,false);
ioctl(fd,VIDEO_STILLPICTURE, sp)
and I didn't get anything correct on the screen (AV switch previously initialised by enigma).
Is there something missing in my code ????
Does the last driver release from cvs (DVB API 3) support VIDEO_STILLPICTURE ioctl ???
Thanks for help,
Franck
VIDEO_STILLPICTURE ioctl
-
- Developer
- Beiträge: 331
- Registriert: Freitag 7. Februar 2003, 22:17
-
- Beiträge: 2
- Registriert: Mittwoch 18. August 2004, 10:52
displayIFrame
Why this function displayIFrame does not use VIDEO_STILLPICTURE api ???
It seams to be defined from ost/video.h file
What should be the state of the video decoder when we call this function ???
Thanks Franck.
int Decoder::displayIFrame(const char *frame, int len)
{
(void)frame;
(void)len;
int fdv=::open("/dev/video", O_WRONLY);
eDebug("opening /dev/video: %d", fdv);
if (fdv < 0)
return -1;
parms.vpid=0x1FFF;
parms.pcrpid=-1;
Set();
unsigned char buf[128];
memset(&buf, 0, 128);
for ( int i=0; i < 20; i++ )
{
write(fdv, frame, len);
write(fdv, &buf, 128);
}
if (::ioctl(fd.video, VIDEO_SET_BLANK, 0) < 0 )
eDebug("VIDEO_SET_BLANK failed (%m)");
close(fdv);
return 0;
}
It seams to be defined from ost/video.h file
What should be the state of the video decoder when we call this function ???
Thanks Franck.
int Decoder::displayIFrame(const char *frame, int len)
{
(void)frame;
(void)len;
int fdv=::open("/dev/video", O_WRONLY);
eDebug("opening /dev/video: %d", fdv);
if (fdv < 0)
return -1;
parms.vpid=0x1FFF;
parms.pcrpid=-1;
Set();
unsigned char buf[128];
memset(&buf, 0, 128);
for ( int i=0; i < 20; i++ )
{
write(fdv, frame, len);
write(fdv, &buf, 128);
}
if (::ioctl(fd.video, VIDEO_SET_BLANK, 0) < 0 )
eDebug("VIDEO_SET_BLANK failed (%m)");
close(fdv);
return 0;
}
-
- Senior Member
- Beiträge: 1339
- Registriert: Donnerstag 24. April 2003, 12:12