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