xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

xf86xv.h (9212B)


      1 
      2 /*
      3  * Copyright (c) 1998-2003 by The XFree86 Project, Inc.
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a
      6  * copy of this software and associated documentation files (the "Software"),
      7  * to deal in the Software without restriction, including without limitation
      8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      9  * and/or sell copies of the Software, and to permit persons to whom the
     10  * Software is furnished to do so, subject to the following conditions:
     11  *
     12  * The above copyright notice and this permission notice shall be included in
     13  * all copies or substantial portions of the Software.
     14  *
     15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     18  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
     19  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     20  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     21  * OTHER DEALINGS IN THE SOFTWARE.
     22  *
     23  * Except as contained in this notice, the name of the copyright holder(s)
     24  * and author(s) shall not be used in advertising or otherwise to promote
     25  * the sale, use or other dealings in this Software without prior written
     26  * authorization from the copyright holder(s) and author(s).
     27  */
     28 
     29 #ifndef _XF86XV_H_
     30 #define _XF86XV_H_
     31 
     32 #include "xvdix.h"
     33 #include "xf86str.h"
     34 
     35 #define VIDEO_OVERLAID_IMAGES			0x00000004
     36 #define VIDEO_OVERLAID_STILLS			0x00000008
     37 /*
     38  * Usage of VIDEO_CLIP_TO_VIEWPORT is not recommended.
     39  * It can make reput behaviour inconsistent.
     40  */
     41 #define VIDEO_CLIP_TO_VIEWPORT			0x00000010
     42 
     43 typedef XvImageRec XF86ImageRec, *XF86ImagePtr;
     44 
     45 typedef struct {
     46     ScrnInfoPtr pScrn;
     47     int id;
     48     unsigned short width, height;
     49     int *pitches;               /* bytes */
     50     int *offsets;               /* in bytes from start of framebuffer */
     51     DevUnion devPrivate;
     52 } XF86SurfaceRec, *XF86SurfacePtr;
     53 
     54 typedef int (*PutVideoFuncPtr) (ScrnInfoPtr pScrn,
     55                                 short vid_x, short vid_y, short drw_x,
     56                                 short drw_y, short vid_w, short vid_h,
     57                                 short drw_w, short drw_h, RegionPtr clipBoxes,
     58                                 void *data, DrawablePtr pDraw);
     59 typedef int (*PutStillFuncPtr) (ScrnInfoPtr pScrn, short vid_x, short vid_y,
     60                                 short drw_x, short drw_y, short vid_w,
     61                                 short vid_h, short drw_w, short drw_h,
     62                                 RegionPtr clipBoxes, void *data,
     63                                 DrawablePtr pDraw);
     64 typedef int (*GetVideoFuncPtr) (ScrnInfoPtr pScrn, short vid_x, short vid_y,
     65                                 short drw_x, short drw_y, short vid_w,
     66                                 short vid_h, short drw_w, short drw_h,
     67                                 RegionPtr clipBoxes, void *data,
     68                                 DrawablePtr pDraw);
     69 typedef int (*GetStillFuncPtr) (ScrnInfoPtr pScrn, short vid_x, short vid_y,
     70                                 short drw_x, short drw_y, short vid_w,
     71                                 short vid_h, short drw_w, short drw_h,
     72                                 RegionPtr clipBoxes, void *data,
     73                                 DrawablePtr pDraw);
     74 typedef void (*StopVideoFuncPtr) (ScrnInfoPtr pScrn, void *data, Bool Exit);
     75 typedef int (*SetPortAttributeFuncPtr) (ScrnInfoPtr pScrn, Atom attribute,
     76                                         INT32 value, void *data);
     77 typedef int (*GetPortAttributeFuncPtr) (ScrnInfoPtr pScrn, Atom attribute,
     78                                         INT32 *value, void *data);
     79 typedef void (*QueryBestSizeFuncPtr) (ScrnInfoPtr pScrn, Bool motion,
     80                                       short vid_w, short vid_h, short drw_w,
     81                                       short drw_h, unsigned int *p_w,
     82                                       unsigned int *p_h, void *data);
     83 typedef int (*PutImageFuncPtr) (ScrnInfoPtr pScrn, short src_x, short src_y,
     84                                 short drw_x, short drw_y, short src_w,
     85                                 short src_h, short drw_w, short drw_h,
     86                                 int image, unsigned char *buf, short width,
     87                                 short height, Bool Sync, RegionPtr clipBoxes,
     88                                 void *data, DrawablePtr pDraw);
     89 typedef int (*ReputImageFuncPtr) (ScrnInfoPtr pScrn, short src_x, short src_y,
     90                                   short drw_x, short drw_y, short src_w,
     91                                   short src_h, short drw_w, short drw_h,
     92                                   RegionPtr clipBoxes, void *data,
     93                                   DrawablePtr pDraw);
     94 typedef int (*QueryImageAttributesFuncPtr) (ScrnInfoPtr pScrn, int image,
     95                                             unsigned short *width,
     96                                             unsigned short *height,
     97                                             int *pitches, int *offsets);
     98 
     99 typedef enum {
    100     XV_OFF,
    101     XV_PENDING,
    102     XV_ON
    103 } XvStatus;
    104 
    105 /*** this is what the driver needs to fill out ***/
    106 
    107 typedef struct {
    108     int id;
    109     const char *name;
    110     unsigned short width, height;
    111     XvRationalRec rate;
    112 } XF86VideoEncodingRec, *XF86VideoEncodingPtr;
    113 
    114 typedef struct {
    115     char depth;
    116     short class;
    117 } XF86VideoFormatRec, *XF86VideoFormatPtr;
    118 
    119 typedef XvAttributeRec XF86AttributeRec, *XF86AttributePtr;
    120 
    121 typedef struct {
    122     unsigned int type;
    123     int flags;
    124     const char *name;
    125     int nEncodings;
    126     XF86VideoEncodingPtr pEncodings;
    127     int nFormats;
    128     XF86VideoFormatPtr pFormats;
    129     int nPorts;
    130     DevUnion *pPortPrivates;
    131     int nAttributes;
    132     XF86AttributePtr pAttributes;
    133     int nImages;
    134     XF86ImagePtr pImages;
    135     PutVideoFuncPtr PutVideo;
    136     PutStillFuncPtr PutStill;
    137     GetVideoFuncPtr GetVideo;
    138     GetStillFuncPtr GetStill;
    139     StopVideoFuncPtr StopVideo;
    140     SetPortAttributeFuncPtr SetPortAttribute;
    141     GetPortAttributeFuncPtr GetPortAttribute;
    142     QueryBestSizeFuncPtr QueryBestSize;
    143     PutImageFuncPtr PutImage;
    144     ReputImageFuncPtr ReputImage;       /* image/still */
    145     QueryImageAttributesFuncPtr QueryImageAttributes;
    146 } XF86VideoAdaptorRec, *XF86VideoAdaptorPtr;
    147 
    148 typedef struct {
    149     XF86ImagePtr image;
    150     int flags;
    151     int (*alloc_surface) (ScrnInfoPtr pScrn,
    152                           int id,
    153                           unsigned short width,
    154                           unsigned short height, XF86SurfacePtr surface);
    155     int (*free_surface) (XF86SurfacePtr surface);
    156     int (*display) (XF86SurfacePtr surface,
    157                     short vid_x, short vid_y,
    158                     short drw_x, short drw_y,
    159                     short vid_w, short vid_h,
    160                     short drw_w, short drw_h, RegionPtr clipBoxes);
    161     int (*stop) (XF86SurfacePtr surface);
    162     int (*getAttribute) (ScrnInfoPtr pScrn, Atom attr, INT32 *value);
    163     int (*setAttribute) (ScrnInfoPtr pScrn, Atom attr, INT32 value);
    164     int max_width;
    165     int max_height;
    166     int num_attributes;
    167     XF86AttributePtr attributes;
    168 } XF86OffscreenImageRec, *XF86OffscreenImagePtr;
    169 
    170 extern _X_EXPORT Bool
    171  xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * Adaptors, int num);
    172 
    173 typedef int (*xf86XVInitGenericAdaptorPtr) (ScrnInfoPtr pScrn,
    174                                             XF86VideoAdaptorPtr ** Adaptors);
    175 
    176 extern _X_EXPORT int
    177  xf86XVRegisterGenericAdaptorDriver(xf86XVInitGenericAdaptorPtr InitFunc);
    178 
    179 extern _X_EXPORT int
    180  xf86XVListGenericAdaptors(ScrnInfoPtr pScrn, XF86VideoAdaptorPtr ** Adaptors);
    181 
    182 extern _X_EXPORT Bool
    183 
    184 xf86XVRegisterOffscreenImages(ScreenPtr pScreen,
    185                               XF86OffscreenImagePtr images, int num);
    186 
    187 extern _X_EXPORT XF86OffscreenImagePtr
    188 xf86XVQueryOffscreenImages(ScreenPtr pScreen, int *num);
    189 
    190 extern _X_EXPORT XF86VideoAdaptorPtr xf86XVAllocateVideoAdaptorRec(ScrnInfoPtr
    191                                                                    pScrn);
    192 
    193 extern _X_EXPORT void xf86XVFreeVideoAdaptorRec(XF86VideoAdaptorPtr ptr);
    194 
    195 extern _X_EXPORT void
    196  xf86XVFillKeyHelper(ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes);
    197 
    198 extern _X_EXPORT void
    199 
    200 xf86XVFillKeyHelperDrawable(DrawablePtr pDraw, CARD32 key, RegionPtr clipboxes);
    201 
    202 extern _X_EXPORT void
    203 
    204 xf86XVFillKeyHelperPort(DrawablePtr pDraw, void *data, CARD32 key,
    205                         RegionPtr clipboxes, Bool fillEverything);
    206 
    207 extern _X_EXPORT Bool
    208 
    209 xf86XVClipVideoHelper(BoxPtr dst,
    210                       INT32 *xa,
    211                       INT32 *xb,
    212                       INT32 *ya,
    213                       INT32 *yb, RegionPtr reg, INT32 width, INT32 height);
    214 
    215 extern _X_EXPORT void
    216 
    217 xf86XVCopyYUV12ToPacked(const void *srcy,
    218                         const void *srcv,
    219                         const void *srcu,
    220                         void *dst,
    221                         int srcPitchy,
    222                         int srcPitchuv, int dstPitch, int h, int w);
    223 
    224 extern _X_EXPORT void
    225 
    226 xf86XVCopyPacked(const void *src,
    227                  void *dst, int srcPitch, int dstPitch, int h, int w);
    228 
    229 #endif                          /* _XF86XV_H_ */