On Thu, 25 Oct 2001, Sottek, Matthew J wrote:

> Ok, I slightly modified the idea to take care of this too. I must
> say, I really really like this one.
> 
> #define XV_TOP_FIELD     0x01
> #define XV_BOTTOM_FIELD  0x02
> #define XV_FRAME         (XV_TOP_FIELD | XV_BOTTOM_FIELD)
> #define XV_HOLD          0x04
> 
> Mostly the same behavior as before, but now we really use these as
> bitfields. When the XV_HOLD bit is ON, the data is not updated
> onscreen at the end of an XvShmPutImage. It has to wait until the
> HOLD bit is removed.
> Here is the change, Bits 0 and 1 indicate the fields that will be
> updated with the next XvShmPutImage. The image position and scaling
> information are always updated. Here are some example uses.
> 
> Default Case: (Works just like it does now)
> XV_FRAME_TYPE = XV_TOP_FIELD | XV_BOTTOM_FIELD (Default)
> XvShmPutImage:  Both fields are updated from the XvImage, the data
>   is updated asap onscreen since the HOLD bit is not on.
> 
> Interlaced Video:
> XV_FRAME_TYPE = XV_HOLD | XV_TOP_FIELD | XV_BOTTOM_FIELD
> XvShmPutImage:  The top field and bottom field are updated from the
>   XvImage. The position, size and scaling information are updated
>   from the call, but the overlay is not updated onscreen.

    XV_TOP_FIELD | XV_BOTTOM_FIELD is redundant.  You can't
not copy both fields.

> XV_FRAME_TYPE = XV_TOP_FIELD
>   The overlay is updated with the latest information and set to
>   show only the top field. The onscreen update happens asap.
> XV_FRAME_TYPE = XV_BOTTOM_FIELD
>   The overlay is set to show the bottom field and the onscreen update
>   happens asap.
> 
> Paused Video:
> Loop:
>  XV_FRAME_TYPE = XV_HOLD
>  XvShmPutImage: NO Fields are updated from the XvImage, but the
>   position and scaling information are taken from the call. The
>   overlay is not updated onscreen.
>  XV_FRAME_TYPE = XV_TOP_FIELD
>   On Screen changed happen asap.
>   goto Loop

    This is confusing.  I don't understand what you are trying
to do here.

                        Mark.

> 
> Paused Video (Better way):
> Loop:
>  XV_FRAME_TYPE = 0x0
>  XvShmPutImage: NO Fields are updated from the XvImage, the position
>   and scaling information are updated. The HOLD bit is not set so
>   overlay is updated asap. This means that for a pause you just set
>   The frame type to 0 and continue with puts as normal. No data
>   copying takes place.
>  goto Loop
> 
> 
> Field at a Time Interlaced:
> XV_FRAME_TYPE = XV_HOLD | XV_TOP_FIELD
> XvShmPutImage: Only the top field is read from the XvImage. This is
>   done by taking the first line and then skipping every other line.
>   The position, size and scaling are updated from the call.
> XV_FRAME_TYPE = XV_TOP_FIELD
>   Update on screen happens asap.
> XV_FRAME_TYPE = XV_HOLD | XV_BOTTOM_FIELD
> XvShmPutImage: Only the bottom field is read from the XvImage.
>   Position, size and scaling are updated but not onscreen.
> XV_FRAME_TYPE = XV_BOTTOM_FIELD
>   Onscreen update happens asap.
> Repeat.
> 
> 
> -Matt
> 

_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to