Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: Playing DVD ?



On Tuesday 26 August 2003 13:25, Dr. Werner Fink wrote:
> On Tue, Aug 26, 2003 at 12:48:52PM +0200, Luis Javier Martínez wrote:
> > Hi, Klaus
> > > I did watch a few DVDs recently, using the DVD plugin.
> > > Since I did only very limited menu access and no FFwd or
> > > FRew, just playing the movie and the special features
> > > worked acceptably.
> > In june Daniel Saez and me where checking the state and problems of the 
> > dvd-plugin, most navigation issues where related to libdvdnav and were not 
> > fault of the plugin. We fixed many of them, but as there where some other 
> > related to still pictures we didn't issue a patch.
> > >
> > > The major problems I see are the sometimes incorrectly displayed
> > > still pictures for menus, and the complete dropout during FFwd/FRew.
> > > Sure I'd appreciate if somebody would fix this, but that means
> > > somebody would have to have time and knowledge to do it...
> > The problem of still pictures was fault of both the dvb driver and the plugin 
> > code. We fixed the problem at the dvd plugin code but no one was interested 
> > on the patch (search Daniel's mails to the list "dsaez@iti.upv.es").
> > The problem at the driver must be a firmware one as we have checked the still 
> > picture routines and them seem OK. When you make use of this routines you can 
> > feed the first still picture but trying to show a secong one has 
> > unpredictable results.
> 
> Try the patch:
> 
> ------------------------------------------------------------------------------
> --- 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?

From looking at the code I wonder whether playing the iframe header
should be done inside the loop. Maybe you could check whether it
improves anything?

Oliver


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



Home | Main Index | Thread Index