/* * Xephyr - A kdrive X server thats runs in a host X window. * Authored by Matthew Allum * * 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 */ #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__*/