#*********************************************************** #Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts, #and the Massachusetts Institute of Technology, Cambridge, Massachusetts. # # All Rights Reserved # #Permission to use, copy, modify, and distribute this software and its #documentation for any purpose and without fee is hereby granted, #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 names of Digital or MIT not be #used in advertising or publicity pertaining to distribution of the #software without specific, written prior permission. # #DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING #ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL #DIGITAL 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. # #****************************************************************** # $XFree86: xc/include/extensions/Xvlib.h,v 1.3 1999/12/11 19:28:48 mvojkovi Exp $ #* #** File: #** #** Xvlib.h --- Xv library public header file #** #** Author: #** #** David Carver (Digital Workstation Engineering/Project Athena) #** #** Revisions: #** #** 26.06.91 Carver #** - changed XvFreeAdaptors to XvFreeAdaptorInfo #** - changed XvFreeEncodings to XvFreeEncodingInfo #** #** 11.06.91 Carver #** - changed SetPortControl to SetPortAttribute #** - changed GetPortControl to GetPortAttribute #** - changed QueryBestSize #** #** 05.15.91 Carver #** - version 2.0 upgrade #** #** 01.24.91 Carver #** - version 1.4 upgrade #** #* import x, xlib, xshm, xv const libXv* = "libXv.so" type PXvRational* = ptr XvRational XvRational*{.final.} = object numerator*: cint denominator*: cint PXvAttribute* = ptr XvAttribute XvAttribute*{.final.} = object flags*: cint # XvGettable, XvSettable min_value*: cint max_value*: cint name*: cstring PPXvEncodingInfo* = ptr PXvEncodingInfo PXvEncodingInfo* = ptr XvEncodingInfo XvEncodingInfo*{.final.} = object encoding_id*: XvEncodingID name*: cstring width*: culong height*: culong rate*: XvRational num_encodings*: culong PXvFormat* = ptr XvFormat XvFormat*{.final.} = object depth*: cchar visual_id*: culong PPXvAdaptorInfo* = ptr PXvAdaptorInfo PXvAdaptorInfo* = ptr XvAdaptorInfo XvAdaptorInfo*{.final.} = object base_id*: XvPortID num_ports*: culong thetype*: cchar name*: cstring num_formats*: culong formats*: PXvFormat num_adaptors*: culong PXvVideoNotifyEvent* = ptr XvVideoNotifyEvent XvVideoNotifyEvent*{.final.} = object theType*: cint serial*: culong # # of last request processed by server send_event*: XBool # true if this came from a SendEvent request display*: PDisplay # Display the event was read from drawable*: Drawable # drawable reason*: culong # what generated this event port_id*: XvPortID # what port time*: Time # milliseconds PXvPortNotifyEvent* = ptr XvPortNotifyEvent XvPortNotifyEvent*{.final.} = object theType*: cint serial*: culong # # of last request processed by server send_event*: XBool # true if this came from a SendEvent request display*: PDisplay # Display the event was read from port_id*: XvPortID # what port time*: Time # milliseconds attribute*: Atom # atom that identifies attribute value*: clong # value of attribute PXvEvent* = ptr XvEvent XvEvent*{.final.} = object pad*: array[0..23, clong] # case longint of # 0 : ( # theType : cint; # ); # 1 : ( # xvvideo : XvVideoNotifyEvent; # ); # 2 : ( # xvport : XvPortNotifyEvent; # ); # 3 : ( # # ); PXvImageFormatValues* = ptr XvImageFormatValues XvImageFormatValues*{.final.} = object id*: cint # Unique descriptor for the format theType*: cint # XvRGB, XvYUV byte_order*: cint # LSBFirst, MSBFirst guid*: array[0..15, cchar] # Globally Unique IDentifier bits_per_pixel*: cint format*: cint # XvPacked, XvPlanar num_planes*: cint # for RGB formats only depth*: cint red_mask*: cuint green_mask*: cuint blue_mask*: cuint # for YUV formats only y_sample_bits*: cuint u_sample_bits*: cuint v_sample_bits*: cuint horz_y_period*: cuint horz_u_period*: cuint horz_v_period*: cuint vert_y_period*: cuint vert_u_period*: cuint vert_v_period*: cuint component_order*: array[0..31, char] # eg. UYVY scanline_order*: cint # XvTopToBottom, XvBottomToTop PXvImage* = ptr XvImage XvImage*{.final.} = object id*: cint width*, height*: cint data_size*: cint # bytes num_planes*: cint pitches*: cint # bytes offsets*: cint # bytes data*: pointer obdata*: XPointer {.deprecated: [TXvRational: XvRational].} {.deprecated: [TXvAttribute: XvAttribute].} {.deprecated: [TXvEncodingInfo: XvEncodingInfo].} {.deprecated: [TXvFormat: XvFormat].} {.deprecated: [TXvAdaptorInfo: XvAdaptorInfo].} {.deprecated: [TXvVideoNotifyEvent: XvVideoNotifyEvent].} {.deprecated: [TXvPortNotifyEvent: XvPortNotifyEvent].} {.deprecated: [TXvEvent: XvEvent].} {.deprecated: [TXvImageFormatValues: XvImageFormatValues].} {.deprecated: [TXvImage: XvImage].} proc XvQueryExtension*(display: PDisplay, p_version, p_revision, p_requestBase, p_eventBase, p_errorBase: cuint): cint{.cdecl, dynlib: libXv, importc.} proc XvQueryAdaptors*(display: PDisplay, window: Window, p_nAdaptors: cuint, p_pAdaptors: PPXvAdaptorInfo): cint{.cdecl, dynlib: libXv, importc.} proc XvQueryEncodings*(display: PDisplay, port: XvPortID, p_nEncoding: cuint, p_pEncoding: PPXvEncodingInfo): cint{.cdecl, dynlib: libXv, importc.} proc XvPutVideo*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC, vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{. cdecl, dynlib: libXv, importc.} proc XvPutStill*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC, vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{. cdecl, dynlib: libXv, importc.} proc XvGetVideo*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC, vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{. cdecl, dynlib: libXv, importc.} proc XvGetStill*(display: PDisplay, port: XvPortID, d: Drawable, gc: GC, vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{. cdecl, dynlib: libXv, importc.} proc XvStopVideo*(display: PDisplay, port: XvPortID, drawable: Drawable): cint{. cdecl, dynlib: libXv, importc.} proc XvGrabPort*(display: PDisplay, port: XvPortID, time: Time): cint{.cdecl, dynlib: libXv, importc.} proc XvUngrabPort*(display: PDisplay, port: XvPortID, time: Time): cint{. cdecl, dynlib: libXv, importc.} proc XvSelectVideoNotify*(display: PDisplay, drawable: Drawable, onoff: XBool): cint{. cdecl, dynlib: libXv, importc.} proc XvSelectPortNotify*(display: PDisplay, port: XvPortID, onoff: XBool): cint{. cdecl, dynlib: libXv, importc.} proc XvSetPortAttribute*(display: PDisplay, port: XvPortID, attribute: Atom, value: cint): cint{.cdecl, dynlib: libXv, importc.} proc XvGetPortAttribute*(display: PDisplay, port: XvPortID, attribute: Atom, p_value: cint): cint{.cdecl, dynlib: libXv, importc.} proc XvQueryBestSize*(display: PDisplay, port: XvPortID, motion: XBool, vid_w, vid_h, drw_w, drw_h: cuint, p_actual_width, p_actual_height: cuint): cint{.cdecl, dynlib: libXv, importc.} proc XvQueryPortAttributes*(display: PDisplay, port: XvPortID, number: cint): PXvAttribute{. cdecl, dynlib: libXv, importc.} proc XvFreeAdaptorInfo*(adaptors: PXvAdaptorInfo){.cdecl, dynlib: libXv, importc.} proc XvFreeEncodingInfo*(encodings: PXvEncodingInfo){.cdecl, dynlib: libXv, importc.} proc XvListImageFormats*(display: PDisplay, port_id: XvPortID, count_return: cint): PXvImageFormatValues{.cdecl, dynlib: libXv, importc.} proc XvCreateImage*(display: PDisplay, port: XvPortID, id: cint, data: pointer, width, height: cint): PXvImage{.cdecl, dynlib: libXv, importc.} proc XvPutImage*(display: PDisplay, id: XvPortID, d: Drawable, gc: GC, image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint, dest_x, dest_y: cint, dest_w, dest_h: cuint): cint{.cdecl, dynlib: libXv, importc.} proc XvShmPutImage*(display: PDisplay, id: XvPortID, d: Drawable, gc: GC, image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint, dest_x, dest_y: cint, dest_w, dest_h: cuint, send_event: XBool): cint{.cdecl, dynlib: libXv, importc.} proc XvShmCreateImage*(display: PDisplay, port: XvPortID, id: cint, data: pointer, width, height: cint, shminfo: PXShmSegmentInfo): PXvImage{.cdecl, dynlib: libXv, importc.} # implementation