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__*/
 | 
						|
 |