Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] Re: Playing DVD ?
On Tue, Aug 26, 2003 at 08:07:02PM +0200, Oliver Endriss wrote:
>
> Can you confirm that VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES enabled
> and the following patch against DVB CVS gives perfect results?
[...patch moved to below...]
>
> Removing the iframe stuff did the trick.
> (I cannot see why one should insert a iframe header here.)
>
I'll try that. Btw: maybe there are applications around which do
not use an iframe start header for full picture frames (picture
viewers e.g.) ... a simple check for this could be:
-------------------------------------------------------------------------
const static u8 iframe_header[] = {0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x80, 0x00, 0x00};
static int
play_iframe(av7110_t *av7110, u8 *buf, unsigned int len, int nonblock)
{
int i, n;
u32 iframe_magic = *(u32*)&iframe_header[0];
if (!(av7110->playing&RP_VIDEO)) {
[...]
if (*(u32*)buf != iframe_magic) {
dvb_play(av7110, iframe_header, sizeof(iframe_header), 0, 1, 0);
}
[...]
}
-------------------------------------------------------------------------
Comments?
Werner
>
> ---------------------------------------------------------------------
> --- av7110.c.org Sat Aug 23 17:35:11 2003
> +++ av7110.c Tue Aug 26 20:01:17 2003
> @@ -4237,29 +4237,23 @@ dvb_audio_write(struct file *file, const
> return dvb_aplay(av7110, buf, count, file->f_flags&O_NONBLOCK, 0);
> }
>
> -u8 iframe_header[] = { 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x80, 0x00, 0x00 };
> -
> #define MIN_IFRAME 400000
>
> static int
> play_iframe(av7110_t *av7110, u8 *buf, unsigned int len, int nonblock)
> {
> - int i, n=1;
> + int i, n;
>
> if (!(av7110->playing&RP_VIDEO)) {
> if (AV_StartPlay(av7110, RP_VIDEO) < 0) {
> return -EBUSY;
> }
> - n=MIN_IFRAME/len+1;
> }
>
> /* setting n always > 1, fixes problems when playing stillframes
> consisting of I- and P-Frames */
> n=MIN_IFRAME/len+1;
>
> - /* FIXME: nonblock? */
> - dvb_play(av7110, iframe_header, sizeof(iframe_header), 0, 1, 0);
> -
> for (i=0; i<n; i++)
> dvb_play(av7110, buf, len, 0, 1, 1);
>
> ---------------------------------------------------------------------
--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.
Home |
Main Index |
Thread Index