239 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Xephyr - A kdrive X server thats runs in a host X window.
 | |
|  *          Authored by Matthew Allum <mallum@openedhand.com>
 | |
|  * 
 | |
|  * Copyright © 2007 OpenedHand Ltd 
 | |
|  *
 | |
|  * Permission to use, copy, modify, distribute, and sell this software and its
 | |
|  * documentation for any purpose is hereby granted without fee, provided that
 | |
|  * the above copyright notice appear in all copies and that both that
 | |
|  * copyright notice and this permission notice appear in supporting
 | |
|  * documentation, and that the name of OpenedHand Ltd not be used in
 | |
|  * advertising or publicity pertaining to distribution of the software without
 | |
|  * specific, written prior permission. OpenedHand Ltd makes no
 | |
|  * representations about the suitability of this software for any purpose.  It
 | |
|  * is provided "as is" without express or implied warranty.
 | |
|  *
 | |
|  * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 | |
|  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
 | |
|  * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 | |
|  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 | |
|  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 | |
|  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 | |
|  * PERFORMANCE OF THIS SOFTWARE.
 | |
|  *
 | |
|  * Authors:
 | |
|  *    Dodji Seketeli <dodji@openedhand.com>
 | |
|  */
 | |
| #ifndef __EPHYRHOSTVIDEO_H__
 | |
| #define __EPHYRHOSTVIDEO_H__
 | |
| 
 | |
| typedef void* EphyrHostXVAdaptor ;
 | |
| typedef struct _EphyrHostXVAdaptorArray EphyrHostXVAdaptorArray ;
 | |
| 
 | |
| typedef struct _EphyrHostVideoFormat {
 | |
|     char depth ;
 | |
|     short visual_class;
 | |
| } EphyrHostVideoFormat ;
 | |
| 
 | |
| typedef struct _EphyrHostRational {
 | |
|     int numerator ;
 | |
|     int denominator ;
 | |
| } EphyrHostRational;
 | |
| 
 | |
| typedef struct _EphyrHostEncoding {
 | |
|     int id ;
 | |
|     char *name ;
 | |
|     unsigned short width, height ;
 | |
|     EphyrHostRational rate ;
 | |
| } EphyrHostEncoding ;
 | |
| 
 | |
| typedef struct _EphyrHostAttribute {
 | |
|     int flags;
 | |
|     int min_value;
 | |
|     int max_value;
 | |
|     char *name;
 | |
| } EphyrHostAttribute ;
 | |
| 
 | |
| typedef struct _EphyrHostImageFormat {
 | |
|     int id;                      /* Unique descriptor for the format */
 | |
|     int type;                    /* XvRGB, XvYUV */
 | |
|     int byte_order;              /* LSBFirst, MSBFirst */
 | |
|     char guid[16];               /* Globally Unique IDentifier */
 | |
|     int bits_per_pixel;
 | |
|     int format;                  /* XvPacked, XvPlanar */
 | |
|     int num_planes;
 | |
| 
 | |
|     /* for RGB formats only */
 | |
|     int depth;
 | |
|     unsigned int red_mask;
 | |
|     unsigned int green_mask;
 | |
|     unsigned int blue_mask;
 | |
| 
 | |
|     /* for YUV formats only */
 | |
|     unsigned int y_sample_bits;
 | |
|     unsigned int u_sample_bits;
 | |
|     unsigned int v_sample_bits;
 | |
|     unsigned int horz_y_period;
 | |
|     unsigned int horz_u_period;
 | |
|     unsigned int horz_v_period;
 | |
|     unsigned int vert_y_period;
 | |
|     unsigned int vert_u_period;
 | |
|     unsigned int vert_v_period;
 | |
|     char component_order[32];    /* eg. UYVY */
 | |
|     int scanline_order;          /* XvTopToBottom, XvBottomToTop */
 | |
| } EphyrHostImageFormat ;
 | |
| 
 | |
| typedef struct {
 | |
|     unsigned short x1, y1, x2, y2 ;
 | |
| } EphyrHostBox ;
 | |
| 
 | |
| void ephyrHostXVInit (void) ;
 | |
| 
 | |
| void ephyrHostFree (void *a_pointer) ;
 | |
| 
 | |
| /*
 | |
|  * host adaptor array
 | |
|  */
 | |
| Bool ephyrHostXVQueryAdaptors (EphyrHostXVAdaptorArray **a_adaptors) ;
 | |
| void ephyrHostXVAdaptorArrayDelete (EphyrHostXVAdaptorArray *a_adaptors) ;
 | |
| int ephyrHostXVAdaptorArrayGetSize (const EphyrHostXVAdaptorArray *a_this) ;
 | |
| EphyrHostXVAdaptor* ephyrHostXVAdaptorArrayAt (const EphyrHostXVAdaptorArray *a_this,
 | |
|                                                int a_index) ;
 | |
| 
 | |
| /*
 | |
|  * host adaptor
 | |
|  */
 | |
| 
 | |
| char ephyrHostXVAdaptorGetType (const EphyrHostXVAdaptor *a_this) ;
 | |
| const char* ephyrHostXVAdaptorGetName (const EphyrHostXVAdaptor *a_this) ;
 | |
| EphyrHostVideoFormat* ephyrHostXVAdaptorGetVideoFormats
 | |
|                                                 (const EphyrHostXVAdaptor *a_this,
 | |
|                                                  int *a_nb_formats) ;
 | |
| int ephyrHostXVAdaptorGetNbPorts (const EphyrHostXVAdaptor *a_this) ;
 | |
| int ephyrHostXVAdaptorGetFirstPortID (const EphyrHostXVAdaptor *a_this) ;
 | |
| 
 | |
| Bool ephyrHostXVAdaptorHasPutVideo (const EphyrHostXVAdaptor *a_this,
 | |
|                                     Bool *a_result) ;
 | |
| Bool ephyrHostXVAdaptorHasGetVideo (const EphyrHostXVAdaptor *a_this,
 | |
|                                     Bool *a_result) ;
 | |
| Bool ephyrHostXVAdaptorHasPutStill (const EphyrHostXVAdaptor *a_this,
 | |
|                                     Bool *a_result) ;
 | |
| Bool ephyrHostXVAdaptorHasGetStill (const EphyrHostXVAdaptor *a_this,
 | |
|                                     Bool *a_result) ;
 | |
| Bool ephyrHostXVAdaptorHasPutImage (const EphyrHostXVAdaptor *a_this,
 | |
|                                     Bool *a_result) ;
 | |
| 
 | |
| /*
 | |
|  * encoding
 | |
|  */
 | |
| Bool ephyrHostXVQueryEncodings (int a_port_id,
 | |
|                                 EphyrHostEncoding **a_encodings,
 | |
|                                 unsigned int *a_num_encodings) ;
 | |
| 
 | |
| void ephyrHostEncodingsDelete (EphyrHostEncoding *a_encodings,
 | |
|                                int a_num_encodings) ;
 | |
| 
 | |
| /*
 | |
|  * attribute
 | |
|  */
 | |
| Bool ephyrHostXVQueryPortAttributes (int a_port_id,
 | |
|                                      EphyrHostAttribute **a_attributes,
 | |
|                                      int *a_num_attributes) ;
 | |
| 
 | |
| void ephyrHostAttributesDelete (EphyrHostAttribute *a_attributes) ;
 | |
| /*
 | |
|  * image format
 | |
|  */
 | |
| 
 | |
| Bool ephyrHostXVQueryImageFormats (int a_port_id,
 | |
|                                    EphyrHostImageFormat **a_formats,
 | |
|                                    int *a_num_format) ;
 | |
| /*
 | |
|  * Port Attribute Get/Set
 | |
|  */
 | |
| Bool ephyrHostXVSetPortAttribute (int a_port_id,
 | |
|                                   int a_atom,
 | |
|                                   int a_attr_value) ;
 | |
| Bool ephyrHostXVGetPortAttribute (int a_port_id,
 | |
|                                   int a_atom,
 | |
|                                   int *a_attr_value) ;
 | |
| /*
 | |
|  *size query
 | |
|  */
 | |
| Bool ephyrHostXVQueryBestSize (int a_port_id,
 | |
|                                Bool a_motion,
 | |
|                                unsigned int a_frame_w,
 | |
|                                unsigned int a_frame_h,
 | |
|                                unsigned int a_drw_w,
 | |
|                                unsigned int a_drw_h,
 | |
|                                unsigned int *a_actual_w,
 | |
|                                unsigned int *a_actual_h) ;
 | |
| 
 | |
| Bool ephyrHostXVQueryImageAttributes (int a_port_id,
 | |
|                                       int a_image_id /*image fourcc code*/,
 | |
|                                       unsigned short *a_width,
 | |
|                                       unsigned short *a_height,
 | |
|                                       int *a_image_size,
 | |
|                                       int *a_pitches,
 | |
|                                       int *a_offsets) ;
 | |
| /*
 | |
|  * atom
 | |
|  */
 | |
| Bool ephyrHostGetAtom (const char* a_name,
 | |
|                        Bool a_create_if_not_exists,
 | |
|                        int *a_atom) ;
 | |
| char* ephyrHostGetAtomName (int a_atom) ;
 | |
| 
 | |
| /*
 | |
|  *PutImage
 | |
|  * (ignore clipping for now)
 | |
|  */
 | |
| Bool ephyrHostXVPutImage (int a_screen_num,
 | |
|                           int a_port_id,
 | |
|                           int a_image_id,
 | |
|                           int a_drw_x,
 | |
|                           int a_drw_y,
 | |
|                           int a_drw_w,
 | |
|                           int a_drw_h,
 | |
|                           int a_src_x,
 | |
|                           int a_src_y,
 | |
|                           int a_src_w,
 | |
|                           int a_src_h,
 | |
|                           int a_image_width,
 | |
|                           int a_image_height,
 | |
|                           unsigned char *a_buf,
 | |
|                           EphyrHostBox *a_clip_rects,
 | |
|                           int a_clip_rect_nums) ;
 | |
| 
 | |
| /*
 | |
|  * Putvideo/PutStill/GetVideo
 | |
|  */
 | |
| Bool ephyrHostXVPutVideo (int a_screen_num,
 | |
|                           int a_port_id,
 | |
|                           int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
 | |
|                           int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h) ;
 | |
| 
 | |
| Bool ephyrHostXVGetVideo (int a_screen_num,
 | |
|                           int a_port_id,
 | |
|                           int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
 | |
|                           int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h) ;
 | |
| 
 | |
| Bool ephyrHostXVPutStill (int a_screen_num,
 | |
|                           int a_port_id,
 | |
|                           int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
 | |
|                           int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h) ;
 | |
| 
 | |
| Bool ephyrHostXVGetStill (int a_screen_num,
 | |
|                           int a_port_id,
 | |
|                           int a_vid_x, int a_vid_y, int a_vid_w, int a_vid_h,
 | |
|                           int a_drw_x, int a_drw_y, int a_drw_w, int a_drw_h) ;
 | |
| 
 | |
| /*
 | |
|  * StopVideo
 | |
|  */
 | |
| Bool ephyrHostXVStopVideo (int a_screen_num, int a_port_id) ;
 | |
| 
 | |
| #endif /*__EPHYRHOSTVIDEO_H__*/
 | |
| 
 |