10e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang/* 2f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Copyright (c) 2011 Intel Corporation. All Rights Reserved. 30e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang * 4f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Permission is hereby granted, free of charge, to any person obtaining a 5f91c8768670386683a281cc39141e21bdda9c97fKun Wang * copy of this software and associated documentation files (the 6f91c8768670386683a281cc39141e21bdda9c97fKun Wang * "Software"), to deal in the Software without restriction, including 7f91c8768670386683a281cc39141e21bdda9c97fKun Wang * without limitation the rights to use, copy, modify, merge, publish, 8f91c8768670386683a281cc39141e21bdda9c97fKun Wang * distribute, sub license, and/or sell copies of the Software, and to 9f91c8768670386683a281cc39141e21bdda9c97fKun Wang * permit persons to whom the Software is furnished to do so, subject to 10f91c8768670386683a281cc39141e21bdda9c97fKun Wang * the following conditions: 113f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang * 12f91c8768670386683a281cc39141e21bdda9c97fKun Wang * The above copyright notice and this permission notice (including the 13f91c8768670386683a281cc39141e21bdda9c97fKun Wang * next paragraph) shall be included in all copies or substantial portions 14f91c8768670386683a281cc39141e21bdda9c97fKun Wang * of the Software. 153f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang * 16f91c8768670386683a281cc39141e21bdda9c97fKun Wang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17f91c8768670386683a281cc39141e21bdda9c97fKun Wang * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18f91c8768670386683a281cc39141e21bdda9c97fKun Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19f91c8768670386683a281cc39141e21bdda9c97fKun Wang * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20f91c8768670386683a281cc39141e21bdda9c97fKun Wang * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21f91c8768670386683a281cc39141e21bdda9c97fKun Wang * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22f91c8768670386683a281cc39141e21bdda9c97fKun Wang * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun * 24bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang * Authors: 25bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang * Shengquan Yuan <shengquan.yuan@intel.com> 26bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang * Zhaohan Ren <zhaohan.ren@intel.com> 27bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang * 28bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang */ 29bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang 30bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang 31bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang 320e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#ifndef _PSB_X11_H_ 330e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#define _PSB_X11_H_ 340e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 350e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include <X11/Xutil.h> 360e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 370e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include <inttypes.h> 380e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include "psb_drv_video.h" 390e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include "psb_drm.h" 400e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include "psb_surface.h" 410e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include "psb_output.h" 420e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include "psb_surface_ext.h" 430e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 440e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#include <va/va.h> 450e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 460e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#define USING_OVERLAY_PORT 1 470e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#define USING_TEXTURE_PORT 2 480e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 49dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuntypedef struct { 50dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun /*src coordinate*/ 51dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun short srcx; 52dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun short srcy; 53dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned short sWidth; 54dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned short sHeight; 55dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun /*dest coordinate*/ 56dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun short destx; 57dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun short desty; 58dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned short dWidth; 59dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned short dHeight; 60dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun} psb_overlay_rect_t, *psb_overlay_rect_p; 61dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun 62dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuntypedef struct { 63dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun int i32Left; 64dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun int i32Top; 65dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun int i32Right; 66dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun int i32Bottom; 67dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned int ui32Width; 68dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned int ui32Height; 69dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun} psb_x11_win_t; 70dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun 71dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuntypedef struct x11_rect_list { 72dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun psb_x11_win_t rect; 73dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun struct x11_rect_list * next; 74dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun} psb_x11_clip_list_t; 75dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun 760e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiangtypedef struct _psb_x11_output_s { 770e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang /* information for xvideo */ 780e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang XvPortID textured_portID; 790e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang XvPortID overlay_portID; 800e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang XvImage *textured_xvimage; 810e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang XvImage *overlay_xvimage; 820e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang PsbXvVAPutSurfaceRec imgdata_vasrf; 830e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang GC gc; 840e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang Drawable output_drawable; 85bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang int is_pixmap; 86dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun Drawable output_drawable_save; 872f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang GC extend_gc; 882f768e2db3e4074a6e9a3d5f0f6e321233d96e4cFei Jiang Drawable extend_drawable; 890e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short output_width; 900e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short output_height; 910e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang int using_port; 920e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 93dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun int bIsVisible; 94dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun psb_x11_win_t winRect; 95dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun psb_x11_clip_list_t *pClipBoxList; 96dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned int ui32NumClipBoxList; 97dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun unsigned int frame_count; 980e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 990e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang int ignore_dpm; 1000e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1010e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang /*for video rotation with overlay adaptor*/ 1020e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang psb_surface_p rotate_surface; 1030e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang int rotate_surfaceID; 1040e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang int rotate; 1050e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned int sprite_enabled; 1060e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1070e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang} psb_x11_output_s, *psb_x11_output_p; 1080e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1090e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei JiangVAStatus psb_putsurface_coverlay( 1100e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VADriverContextP ctx, 1110e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VASurfaceID surface, 1120e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang Drawable draw, /* X Drawable */ 1130e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short srcx, 1140e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short srcy, 1150e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short srcw, 1160e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short srch, 1170e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short destx, 1180e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short desty, 1190e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short destw, 1200e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short desth, 1210e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VARectangle *cliprects, /* client supplied clip list */ 1220e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned int number_cliprects, /* number of clip rects in the clip list */ 1230e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned int flags /* de-interlacing flags */ 1240e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang); 1250e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1260e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1270e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei JiangVAStatus psb_putsurface_xvideo( 1280e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VADriverContextP ctx, 1290e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VASurfaceID surface, 1300e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang Drawable draw, 1310e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short srcx, 1320e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short srcy, 1330e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short srcw, 1340e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short srch, 1350e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short destx, 1360e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short desty, 1370e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short destw, 1380e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short desth, 1390e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VARectangle *cliprects, /* client supplied clip list */ 1400e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned int number_cliprects, /* number of clip rects in the clip list */ 1410e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned int flags /* de-interlacing flags */ 1420e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang); 1430e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1440e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei JiangVAStatus psb_putsurface_ctexture( 1450e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VADriverContextP ctx, 1460e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang VASurfaceID surface, 1470e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang Drawable draw, 1480e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short srcx, 1490e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short srcy, 1500e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short srcw, 1510e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short srch, 1520e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short destx, 1530e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang short desty, 1540e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short destw, 1550e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned short desth, 1560e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang unsigned int flags /* de-interlacing flags */ 1570e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang); 1580e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1590e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei JiangVAStatus psb_init_xvideo(VADriverContextP ctx, psb_x11_output_p output); 1600e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei JiangVAStatus psb_deinit_xvideo(VADriverContextP ctx); 1610e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang 1620e1db7cbdd7ea667fcbc9409f85e14420cb8ae9cFei Jiang#endif 163