1 /* 2 * Copyright (c) 2011 Intel Corporation. All Rights Reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the 6 * "Software"), to deal in the Software without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sub license, and/or sell copies of the Software, and to 9 * permit persons to whom the Software is furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the 13 * next paragraph) shall be included in all copies or substantial portions 14 * of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 * 24 * Authors: 25 * Shengquan Yuan <shengquan.yuan@intel.com> 26 * Zhaohan Ren <zhaohan.ren@intel.com> 27 * 28 */ 29 30 31 32 #ifndef _PSB_X11_H_ 33 #define _PSB_X11_H_ 34 35 #include <X11/Xutil.h> 36 37 #include <inttypes.h> 38 #include "psb_drv_video.h" 39 #include "psb_drm.h" 40 #include "psb_surface.h" 41 #include "psb_output.h" 42 #include "psb_surface_ext.h" 43 44 #include <va/va.h> 45 46 #define USING_OVERLAY_PORT 1 47 #define USING_TEXTURE_PORT 2 48 49 typedef struct { 50 /*src coordinate*/ 51 short srcx; 52 short srcy; 53 unsigned short sWidth; 54 unsigned short sHeight; 55 /*dest coordinate*/ 56 short destx; 57 short desty; 58 unsigned short dWidth; 59 unsigned short dHeight; 60 } psb_overlay_rect_t, *psb_overlay_rect_p; 61 62 typedef struct { 63 int i32Left; 64 int i32Top; 65 int i32Right; 66 int i32Bottom; 67 unsigned int ui32Width; 68 unsigned int ui32Height; 69 } psb_x11_win_t; 70 71 typedef struct x11_rect_list { 72 psb_x11_win_t rect; 73 struct x11_rect_list * next; 74 } psb_x11_clip_list_t; 75 76 typedef struct _psb_x11_output_s { 77 /* information for xvideo */ 78 XvPortID textured_portID; 79 XvPortID overlay_portID; 80 XvImage *textured_xvimage; 81 XvImage *overlay_xvimage; 82 PsbXvVAPutSurfaceRec imgdata_vasrf; 83 GC gc; 84 Drawable output_drawable; 85 int is_pixmap; 86 Drawable output_drawable_save; 87 GC extend_gc; 88 Drawable extend_drawable; 89 unsigned short output_width; 90 unsigned short output_height; 91 int using_port; 92 93 int bIsVisible; 94 psb_x11_win_t winRect; 95 psb_x11_clip_list_t *pClipBoxList; 96 unsigned int ui32NumClipBoxList; 97 unsigned int frame_count; 98 99 int ignore_dpm; 100 101 /*for video rotation with overlay adaptor*/ 102 psb_surface_p rotate_surface; 103 int rotate_surfaceID; 104 int rotate; 105 unsigned int sprite_enabled; 106 107 } psb_x11_output_s, *psb_x11_output_p; 108 109 VAStatus psb_putsurface_coverlay( 110 VADriverContextP ctx, 111 VASurfaceID surface, 112 Drawable draw, /* X Drawable */ 113 short srcx, 114 short srcy, 115 unsigned short srcw, 116 unsigned short srch, 117 short destx, 118 short desty, 119 unsigned short destw, 120 unsigned short desth, 121 VARectangle *cliprects, /* client supplied clip list */ 122 unsigned int number_cliprects, /* number of clip rects in the clip list */ 123 unsigned int flags /* de-interlacing flags */ 124 ); 125 126 127 VAStatus psb_putsurface_xvideo( 128 VADriverContextP ctx, 129 VASurfaceID surface, 130 Drawable draw, 131 short srcx, 132 short srcy, 133 unsigned short srcw, 134 unsigned short srch, 135 short destx, 136 short desty, 137 unsigned short destw, 138 unsigned short desth, 139 VARectangle *cliprects, /* client supplied clip list */ 140 unsigned int number_cliprects, /* number of clip rects in the clip list */ 141 unsigned int flags /* de-interlacing flags */ 142 ); 143 144 VAStatus psb_putsurface_ctexture( 145 VADriverContextP ctx, 146 VASurfaceID surface, 147 Drawable draw, 148 short srcx, 149 short srcy, 150 unsigned short srcw, 151 unsigned short srch, 152 short destx, 153 short desty, 154 unsigned short destw, 155 unsigned short desth, 156 unsigned int flags /* de-interlacing flags */ 157 ); 158 159 VAStatus psb_init_xvideo(VADriverContextP ctx, psb_x11_output_p output); 160 VAStatus psb_deinit_xvideo(VADriverContextP ctx); 161 162 #endif 163