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 03:10:00PM +0200, Oliver Endriss wrote:
> > --- DVB/driver/av7110/av7110.c
> > +++ DVB/driver/av7110/av7110.c	Tue Aug 26 13:19:02 2003
> > @@ -4248,16 +4248,16 @@
> >                  if (AV_StartPlay(av7110, RP_VIDEO) < 0) {
> >  			return -EBUSY;
> >  		}
> > -                n=MIN_IFRAME/len+1;
> >          }
> > +	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);
> > -
> > -	dvb_filter_ipack_flush(&av7110->ipack[1]);
> > +	for (i=0; i<n; i++) {
> > +		dvb_play(av7110, buf, len, 0, 1, 1);
> > +		dvb_filter_ipack_flush(&av7110->ipack[1]);
> > +	}
> >  	return 0;
> >  }
> >  
> > ------------------------------------------------------------------------------
> > 
> > ... you may also enable the define VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES
> > within dvbdevice.c of VDR.
> > 
> > IMHO it is a long standing problem.  Without this patch you get a
> > really smooth still picture the first time ... but e.g. moving cut
> > marks is sometime anoying.  With this patch the still picture is always
> > uptodate but you may see the picture a bit wobbling at sharp lines.
> 
> Apparently Michael Hunold has fixed this problem recently in DVB CVS:
> 
> |2003-08-22 10:32  hunold
> |   * driver/av7110/av7110.c: - play_iframe may be used to play
> |   stillpicture frames, that can either   by complete i-frames or
> |   partial p-frames. In any case, the av7110 needs   about 400kB of
> |   video data, before the internal video decoder starts   displaying
> |   anything. for stillframes, this is bad, so we  *always*   loop
> |   writing the frame until the magic amount is reached. stupid, but
> |   works...
> 
> The only functional difference is that dvb_filter_ipack_flush() is
> called outside of the loop. Does this make a difference?

Together with the trick that n is always greater than 1 it
works, this is (highly) experimental ;^)

Without this patch and disabled VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES
in dvbdevice.c it is _sometimes_ a nightmare to move cut marks with key
`4' and `6' because the new mark isn't shown but the old is visible.
You see this if you press the `play' key ... or check the result of
the cutter thread.

For disabled VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES it may help to
clear the video buffer in cDvbDevice::StillPicture() before writing
the new frame to the  fd_video.  But this I've not tried yet.


        Werner


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index