[MPlayer-dev-eng] [PATCH] SUN XVR-100 VO driver 3. try

Balatoni Denes dbalatoni at interware.hu
Wed Jul 25 21:34:40 CEST 2007


Hi!

Wednesday 25 July 2007 20:04-kor Alban Bedel ezt írta:
> > + * no double-buffering, as it would slow down playback (waiting for
> > vertical retraces)
>
> Why that? In the typical case the wait time is negligable enouth, and
> the user can still disable it if he want. It doesn't matter much atm
> but you should definitly consider implementing double buffering.

I did try it, it was much slower, so I didn't like it. Maybe in the future 
(btw it seems two vertical retraces are needed until the page is flipped, and 
that is slow).

> > +/* This actually doesn't change a thing, width greater than 1536 still
> > won't work... */
>
> You should consider putting a check for the image size in config() until
> this issue is solved.

It works, but there is a pink stripe on the right side. So IMO the user should 
choose whether he/she wants pink stripe (-vo xover:xvr100) or unusably slow 
playback (-vo x11).

> > +    if (pfb_xres > pfb_dstwidth) {
> > +        pfb_wx0 = (pfb_xres - pfb_dstwidth) / 2;
> > +        pfb_wx1 = pfb_wx0 + pfb_dstwidth;
> > +    }
> > +    else {
> > +        pfb_wx0 = 0;
> > +        pfb_wx1 = pfb_xres;
> > +    }
> > +
> > +    if (pfb_yres > pfb_dstheight) {
> > +        pfb_wy0 = (pfb_yres - pfb_dstheight) / 2;
> > +        pfb_wy1 = pfb_wy0 + pfb_dstheight;
> > +    }
> > +    else {
> > +        pfb_wy0 = 0;
> > +        pfb_wy1 = pfb_yres;
> > +    }
> > +
> > +    pfb_overlay_on();
> > +
> > +    return VO_TRUE;
> > +}
>
> This could be done with less code duplication.

Like moving 15 trivial lines of code to a separate function? What's the point 
of that?

>
> > +static uint32_t get_image(mp_image_t *mpi){
> > +    return VO_FALSE;
> > +#if 0 /* doesn't work for some reason */
>
> What is not working exactly?

-vfm ffmpeg -dr always says "stride changed" or something like that (I don't 
have the message at hand), and some frames are not shown.

> > +    if (mpi->flags&MP_IMGFLAG_READABLE) return VO_FALSE;
> > +    if (!(mpi->flags&MP_IMGFLAG_PLANAR)) return VO_FALSE; // FIXME:
> > impossible for YV12, right? +    if
> > (!(mpi->flags&MP_IMGFLAG_ACCEPT_STRIDE)) return VO_FALSE; +
> > +    mpi->planes[0]=pfb_vbase + pfb_buffer1;
> > +    if (mpi->flags&MP_IMGFLAG_SWAPPED){
> > +        mpi->planes[1]=pfb_vbase + pfb_buffer3;
> > +        mpi->planes[2]=pfb_vbase + pfb_buffer2;
> > +    } else {
> > +        mpi->planes[1]=pfb_vbase + pfb_buffer2;
> > +        mpi->planes[2]=pfb_vbase + pfb_buffer3;
> > +    }
>
> This is wrong. MP_IMGFLAG_SWAPPED mean that the planes are swaped in
> memory. However the mpi->planes pointers are always in the same order
> (YUV), so this flag is irrelevant unless you access the 3 planes as a
> single chunk of memory.

Ok, than this will be removed.

> > +static int query_format(uint32_t format)
> > +{
> > +    switch(format){
> > +    case IMGFMT_YV12:
>
> I420 should work just fine too.

This will be included.

> > +        return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW
> > |VFCAP_HWSCALE_UP|VFCAP_HWSCALE_DOWN|VFCAP_ACCEPT_STRIDE; +    }
> > +    return 0;
>
> The rest look ok afaict.

Thanks, patch will be coming tomorrow.

>
> 	Albeu

bye
Denes



More information about the MPlayer-dev-eng mailing list