vdr/xine-lib-vdr/src/video_out/vidix Makefile.am Makefile.in README fourcc.h vidix.h vidix.txt vidixlib.c vidixlib.h
Darren Salt
pkg-vdr-dvb-changes@lists.alioth.debian.org
Mon, 04 Apr 2005 22:38:32 +0000
Update of /cvsroot/pkg-vdr-dvb/vdr/xine-lib-vdr/src/video_out/vidix
In directory haydn:/tmp/cvs-serv13100/src/video_out/vidix
Added Files:
Makefile.am Makefile.in README fourcc.h vidix.h vidix.txt
vidixlib.c vidixlib.h
Log Message:
Import of VDR-patched xine-lib.
--- NEW FILE: vidix.h ---
/*
* vidix.h
* VIDIX - VIDeo Interface for *niX
* This interface is introduced as universal one to MPEG decoder,
* BES == Back End Scaler and YUV2RGB hw accelerators.
* In the future it may be expanded up to capturing and audio things.
* Main goal of this this interface imlpementation is providing DGA
* everywhere where it's possible (unlike X11 and other).
* Copyright 2002 Nick Kurshev
* Licence: GPL
* This interface is based on v4l2, fbvid.h, mga_vid.h projects
* and personally my ideas.
* NOTE: This interface is introduces as driver interface.
* Don't use it for APP.
*/
#ifndef VIDIX_H
#define VIDIX_H
#ifdef __cplusplus
extern "C" {
#endif
#define VIDIX_VERSION 100
/* returns driver version */
extern unsigned vixGetVersion( void );
#define PROBE_NORMAL 0 /* normal probing */
#define PROBE_FORCE 1 /* ignore device_id but recognize device if it's known */
/* Probes video hw.
verbose - specifies verbose level.
force - specifies force mode - driver should ignore
device_id (danger but useful for new devices)
Returns 0 if ok else errno */
extern int vixProbe( int verbose, int force );
/* Initializes driver.
args - specifies driver specific parameters
Returns 0 if ok else errno */
extern int vixInit( const char *args );
/* Destroys driver */
extern void vixDestroy( void );
typedef struct vidix_capability_s
{
char name[64]; /* Driver name */
char author[64]; /* Author name */
#define TYPE_OUTPUT 0x00000000 /* Is a video playback device */
#define TYPE_CAPTURE 0x00000001 /* Is a capture device */
#define TYPE_CODEC 0x00000002 /* Device supports hw (de)coding */
#define TYPE_FX 0x00000004 /* Is a video effects device */
int type; /* Device type, see below */
unsigned reserved0[4];
int maxwidth;
int maxheight;
int minwidth;
int minheight;
int maxframerate; /* -1 if unlimited */
#define FLAG_NONE 0x00000000 /* No flags defined */
#define FLAG_DMA 0x00000001 /* Card can use DMA */
#define FLAG_EQ_DMA 0x00000002 /* Card can use DMA only if src pitch == dest pitch */
#define FLAG_SYNC_DMA 0x00000004 /* Possible to wait for DMA
* to finish. See
* BM_DMA_SYNC and
* BM_DMA_BLOCK below */
#define FLAG_UPSCALER 0x00000010 /* Card supports hw upscaling */
#define FLAG_DOWNSCALER 0x00000020 /* Card supports hw downscaling */
#define FLAG_SUBPIC 0x00001000 /* Card supports DVD subpictures */
#define FLAG_EQUALIZER 0x00002000 /* Card supports equalizer */
unsigned flags; /* Feature flags, see above */
unsigned short vendor_id;
unsigned short device_id;
unsigned reserved1[4];
}vidix_capability_t;
/* Should fill at least type before init.
Returns 0 if ok else errno */
extern int vixGetCapability(vidix_capability_t *);
typedef struct vidix_fourcc_s
{
unsigned fourcc; /* input: requested fourcc */
unsigned srcw; /* input: hint: width of source */
unsigned srch; /* input: hint: height of source */
#define VID_DEPTH_NONE 0x0000
#define VID_DEPTH_1BPP 0x0001
#define VID_DEPTH_2BPP 0x0002
#define VID_DEPTH_4BPP 0x0004
#define VID_DEPTH_8BPP 0x0008
#define VID_DEPTH_12BPP 0x0010
#define VID_DEPTH_15BPP 0x0020
#define VID_DEPTH_16BPP 0x0040
#define VID_DEPTH_24BPP 0x0080
#define VID_DEPTH_32BPP 0x0100
unsigned depth; /* output: screen depth for given fourcc */
#define VID_CAP_NONE 0x0000
#define VID_CAP_EXPAND 0x0001 /* if overlay can be bigger than source */
#define VID_CAP_SHRINK 0x0002 /* if overlay can be smaller than source */
#define VID_CAP_BLEND 0x0004 /* if overlay can be blended with framebuffer */
#define VID_CAP_COLORKEY 0x0008 /* if overlay can be restricted to a colorkey */
#define VID_CAP_ALPHAKEY 0x0010 /* if overlay can be restricted to an alpha channel */
#define VID_CAP_COLORKEY_ISRANGE 0x0020 /* if the colorkey can be a range */
#define VID_CAP_ALPHAKEY_ISRANGE 0x0040 /* if the alphakey can be a range */
#define VID_CAP_COLORKEY_ISMAIN 0x0080 /* colorkey is checked against framebuffer */
#define VID_CAP_COLORKEY_ISOVERLAY 0x0100 /* colorkey is checked against overlay */
#define VID_CAP_ALPHAKEY_ISMAIN 0x0200 /* alphakey is checked against framebuffer */
#define VID_CAP_ALPHAKEY_ISOVERLAY 0x0400 /* alphakey is checked against overlay */
unsigned flags; /* output: capability */
}vidix_fourcc_t;
/* Returns 0 if ok else errno */
extern int vixQueryFourcc(vidix_fourcc_t *);
typedef struct vidix_yuv_s
{
unsigned y,u,v,a;
}vidix_yuv_t;
typedef struct vidix_rect_s
{
unsigned x,y,w,h; /* in pixels */
vidix_yuv_t pitch; /* line-align in bytes */
}vidix_rect_t;
typedef struct vidix_color_key_s
{
#define CKEY_FALSE 0
#define CKEY_TRUE 1
#define CKEY_EQ 2
#define CKEY_NEQ 3
unsigned op; /* defines logical operation */
unsigned char red;
unsigned char green;
unsigned char blue;
unsigned char reserved;
}vidix_ckey_t;
typedef struct vidix_video_key_s
{
#define VKEY_FALSE 0
#define VKEY_TRUE 1
#define VKEY_EQ 2
#define VKEY_NEQ 3
unsigned op; /* defines logical operation */
unsigned char key[8];
}vidix_vkey_t;
typedef struct vidix_playback_s
{
unsigned fourcc; /* app -> driver: movies's fourcc */
unsigned capability; /* app -> driver: what capability to use */
unsigned blend_factor; /* app -> driver: blending factor */
vidix_rect_t src; /* app -> driver: original movie size */
vidix_rect_t dest; /* app -> driver: destinition movie size. driver->app dest_pitch */
#define VID_PLAY_INTERLEAVED_UV 0x00000001 /* driver -> app: interleaved UV planes */
#define INTERLEAVING_UV 0x00001000 /* UVUVUVUVUV used by Matrox G200 */
#define INTERLEAVING_VU 0x00001001 /* VUVUVUVUVU */
int flags;
/* memory model */
unsigned frame_size; /* driver -> app: destinition frame size */
unsigned num_frames; /* app -> driver: after call: driver -> app */
#define VID_PLAY_MAXFRAMES 1024 /* unreal limitation */
unsigned offsets[VID_PLAY_MAXFRAMES]; /* driver -> app */
vidix_yuv_t offset; /* driver -> app: relative offsets within frame for yuv planes */
void* dga_addr; /* driver -> app: linear address */
}vidix_playback_t;
/* Returns 0 if ok else errno */
extern int vixConfigPlayback(vidix_playback_t *);
/* Returns 0 if ok else errno */
extern int vixPlaybackOn( void );
/* Returns 0 if ok else errno */
extern int vixPlaybackOff( void );
/* Returns 0 if ok else errno */
extern int vixPlaybackFrameSelect( unsigned frame_idx );
typedef struct vidix_grkey_s
{
vidix_ckey_t ckey; /* app -> driver: color key */
vidix_vkey_t vkey; /* app -> driver: video key */
#define KEYS_PUT 0
#define KEYS_AND 1
#define KEYS_OR 2
#define KEYS_XOR 3
unsigned key_op; /* app -> driver: keys operations */
}vidix_grkey_t;
/* Returns 0 if ok else errno */
extern int vixGetGrKeys( vidix_grkey_t * );
/* Returns 0 if ok else errno */
extern int vixSetGrKeys( const vidix_grkey_t * );
typedef struct vidix_video_eq_s
{
#define VEQ_CAP_NONE 0x00000000UL
#define VEQ_CAP_BRIGHTNESS 0x00000001UL
#define VEQ_CAP_CONTRAST 0x00000002UL
#define VEQ_CAP_SATURATION 0x00000004UL
#define VEQ_CAP_HUE 0x00000008UL
#define VEQ_CAP_RGB_INTENSITY 0x00000010UL
int cap; /* on get_eq should contain capability of equalizer
on set_eq should contain using fields */
/* end-user app can have presets like: cold-normal-hot picture and so on */
int brightness; /* -1000 : +1000 */
int contrast; /* -1000 : +1000 */
int saturation; /* -1000 : +1000 */
int hue; /* -1000 : +1000 */
int red_intensity; /* -1000 : +1000 */
int green_intensity;/* -1000 : +1000 */
int blue_intensity; /* -1000 : +1000 */
#define VEQ_FLG_ITU_R_BT_601 0x00000000 /* ITU-R BT.601 colour space (default) */
#define VEQ_FLG_ITU_R_BT_709 0x00000001 /* ITU-R BT.709 colour space */
#define VEQ_FLG_ITU_MASK 0x0000000f
int flags; /* currently specifies ITU YCrCb color space to use */
}vidix_video_eq_t;
/* Returns 0 if ok else errno */
extern int vixPlaybackGetEq( vidix_video_eq_t * );
/* Returns 0 if ok else errno */
extern int vixPlaybackSetEq( const vidix_video_eq_t * );
typedef struct vidix_deinterlace_s
{
#define CFG_NON_INTERLACED 0x00000000 /* stream is not interlaced */
#define CFG_INTERLACED 0x00000001 /* stream is interlaced */
#define CFG_EVEN_ODD_INTERLACING 0x00000002 /* first frame contains even fields but second - odd */
#define CFG_ODD_EVEN_INTERLACING 0x00000004 /* first frame contains odd fields but second - even */
#define CFG_UNIQUE_INTERLACING 0x00000008 /* field deinterlace_pattern is valid */
#define CFG_UNKNOWN_INTERLACING 0x0000000f /* unknown deinterlacing - use adaptive if it's possible */
unsigned flags;
unsigned deinterlace_pattern; /* app -> driver: deinterlace pattern if flag CFG_UNIQUE_INTERLACING is set */
}vidix_deinterlace_t;
/* Returns 0 if ok else errno */
extern int vixPlaybackGetDeint( vidix_deinterlace_t * );
/* Returns 0 if ok else errno */
extern int vixPlaybackSetDeint( const vidix_deinterlace_t * );
typedef struct vidix_slice_s
{
void* address; /* app -> driver */
unsigned size; /* app -> driver */
vidix_rect_t slice; /* app -> driver */
}vidix_slice_t;
typedef struct vidix_dma_s
{
void * src; /* app -> driver. Virtual address of source */
unsigned dest_offset; /* app -> driver. Destinition offset within of video memory */
unsigned size; /* app -> driver. Size of transaction */
#define BM_DMA_ASYNC 0
#define BM_DMA_SYNC 1 /* await previous dma transfer completion */
#define BM_DMA_FIXED_BUFFS 2 /* app -> driver: app uses buffers which are fixed in memory */
#define BM_DMA_BLOCK 4 /* block until the transfer is complete */
unsigned flags; /* app -> driver */
unsigned idx; /* app -> driver: idx of src buffer */
void * internal[VID_PLAY_MAXFRAMES]; /* for internal use by driver */
}vidix_dma_t;
/* Returns 0 if ok else errno */
extern int vixPlaybackCopyFrame( vidix_dma_t * );
/* Returns 0 if DMA is available else errno (EBUSY) */
extern int vixQueryDMAStatus( void );
/*
This structure is introdused to support OEM effects like:
- sharpness
- exposure
- (auto)gain
- H(V)flip
- black level
- white balance
and many other
*/
typedef struct vidix_oem_fx_s
{
#define FX_TYPE_BOOLEAN 0x00000000
#define FX_TYPE_INTEGER 0x00000001
int type; /* type of effects */
int num; /* app -> driver: effect number. From 0 to max number of effects */
int minvalue; /* min value of effect. 0 - for boolean */
int maxvalue; /* max value of effect. 1 - for boolean */
int value; /* current value of effect on 'get'; required on set */
char * name[80]; /* effect name to display */
}vidix_oem_fx_t;
/* Returns 0 if ok else errno */
extern int vixQueryNumOemEffects( unsigned * number );
/* Returns 0 if ok else errno */
extern int vixGetOemEffect( vidix_oem_fx_t * );
/* Returns 0 if ok else errno */
extern int vixSetOemEffect( const vidix_oem_fx_t * );
#ifdef VIDIX_BUILD_STATIC
#define VIDIX_NAME(name) VIDIX_STATIC##name
#else
#define VIDIX_NAME(name) name
#endif
#ifdef __cplusplus
}
#endif
#endif
--- NEW FILE: fourcc.h ---
/*
* fourcc.h
* This file is part of VIDIX
* Copyright 2002 Nick Kurshev
* Licence: GPL
* This interface is based on v4l2, fbvid.h, mga_vid.h projects
* and personally my ideas.
*/
#ifndef FOURCC_H
#define FOURCC_H
/* Four-character-code (FOURCC) */
#define vid_fourcc(a,b,c,d)\
(((unsigned)(a)<<0)|((unsigned)(b)<<8)|((unsigned)(c)<<16)|((unsigned)(d)<<24))
/* RGB fourcc */
#define IMGFMT_RGB332 vid_fourcc('R','G','B','1') /* 8 RGB-3-3-2 */
#define IMGFMT_RGB555 vid_fourcc('R','G','B','O') /* 16 RGB-5-5-5 */
#define IMGFMT_RGB565 vid_fourcc('R','G','B','P') /* 16 RGB-5-6-5 */
#define IMGFMT_RGB555X vid_fourcc('R','G','B','Q') /* 16 RGB-5-5-5 BE */
#define IMGFMT_RGB565X vid_fourcc('R','G','B','R') /* 16 RGB-5-6-5 BE */
#define IMGFMT_BGR15 vid_fourcc('B','G','R',15) /* 15 BGR-5-5-5 */
#define IMGFMT_RGB15 vid_fourcc('R','G','B',15) /* 15 RGB-5-5-5 */
#define IMGFMT_BGR16 vid_fourcc('B','G','R',16) /* 32 BGR-5-6-5 */
#define IMGFMT_RGB16 vid_fourcc('R','G','B',16) /* 32 RGB-5-6-5 */
#define IMGFMT_BGR24 vid_fourcc('B','G','R',24) /* 24 BGR-8-8-8 */
#define IMGFMT_RGB24 vid_fourcc('R','G','B',24) /* 24 RGB-8-8-8 */
#define IMGFMT_BGR32 vid_fourcc('B','G','R',32) /* 32 BGR-8-8-8-8 */
#define IMGFMT_RGB32 vid_fourcc('R','G','B',32) /* 32 RGB-8-8-8-8 */
/* Planar YUV Formats */
#define IMGFMT_YVU9 vid_fourcc('Y','V','U','9') /* 9 YVU 4:1:0 */
#define IMGFMT_IF09 vid_fourcc('I','F','0','9') /* 9.5 YUV 4:1:0 */
#define IMGFMT_YV12 vid_fourcc('Y','V','1','2') /* 12 YVU 4:2:0 */
#define IMGFMT_I420 vid_fourcc('I','4','2','0') /* 12 YUV 4:2:0 */
#define IMGFMT_IYUV vid_fourcc('I','Y','U','V') /* 12 YUV 4:2:0 */
#define IMGFMT_CLPL vid_fourcc('C','L','P','L') /* 12 */
#define IMGFMT_Y800 vid_fourcc('Y','8','0','0') /* 8 Y Grayscale */
#define IMGFMT_NV12 vid_fourcc('N','V','1','2') /* 8 Y Grayscale */
#define IMGFMT_Y8 vid_fourcc('Y','8',' ',' ') /* 8 Y Grayscale */
/* Packed YUV Formats */
#define IMGFMT_IUYV vid_fourcc('I','U','Y','V') /* 16 line order {0,2,4,...1,3,5} */
#define IMGFMT_IY41 vid_fourcc('I','Y','4','1') /* 12 line order {0,2,4,...1,3,5} */
#define IMGFMT_IYU1 vid_fourcc('I','Y','U','1') /* 12 IEEE 1394 Digital Camera */
#define IMGFMT_IYU2 vid_fourcc('I','Y','U','2') /* 24 IEEE 1394 Digital Camera */
#define IMGFMT_UYVY vid_fourcc('U','Y','V','Y') /* 16 UYVY 4:2:2 */
#define IMGFMT_UYNV vid_fourcc('U','Y','N','V') /* 16 UYVY 4:2:2 */
#define IMGFMT_cyuv vid_fourcc('c','y','u','v') /* 16 */
#define IMGFMT_Y422 vid_fourcc('Y','4','2','2') /* 16 UYVY 4:2:2 */
#define IMGFMT_YUY2 vid_fourcc('Y','U','Y','2') /* 16 YUYV 4:2:2 */
#define IMGFMT_YUNV vid_fourcc('Y','U','N','V') /* 16 YUYV 4:2:2 */
#define IMGFMT_YVYU vid_fourcc('Y','V','Y','U') /* 16 YVYU 4:2:2 */
#define IMGFMT_Y41P vid_fourcc('Y','4','1','P') /* 12 YUV 4:1:1 */
#define IMGFMT_Y211 vid_fourcc('Y','2','1','1') /* 8.5 YUV 2:1:1 */
#define IMGFMT_Y41T vid_fourcc('Y','4','1','T') /* 12 YUV 4:1:1 */
#define IMGFMT_Y42T vid_fourcc('Y','4','2','T') /* 16 UYVU 4:2:2 */
#define IMGFMT_V422 vid_fourcc('V','4','2','2') /* 16 YUY2 4:2:2 */
#define IMGFMT_V655 vid_fourcc('V','6','5','5') /* 16 YUV 4:2:2 */
#define IMGFMT_CLJR vid_fourcc('C','L','J','R') /* 7.9 YUV 4:1:1 */
#define IMGFMT_YUVP vid_fourcc('Y','U','V','P') /* 24 Y0U0Y1V0 */
#define IMGFMT_UYVP vid_fourcc('U','Y','V','P') /* 24 U0Y0V0Y1 */
#define IMGFMT_411P vid_fourcc('4','1','1','P') /* 12 alias of Y41B */
#define IMGFMT_422P vid_fourcc('4','2','2','P') /* 16 alias of Y42B */
#define IMGFMT_444P vid_fourcc('4','4','4','P') /* 24 alias of Y44B */
/* Vendor-specific formats */
#define IMGFMT_WNVA vid_fourcc('W','N','V','A') /* Winnov hw compress */
#endif
--- NEW FILE: vidixlib.h ---
/*
* vidixlib.h
* VIDIXLib - Library for VIDeo Interface for *niX
* This interface is introduced as universal one to MPEG decoder,
* BES == Back End Scaler and YUV2RGB hw accelerators.
* In the future it may be expanded up to capturing and audio things.
* Main goal of this this interface imlpementation is providing DGA
* everywhere where it's possible (unlike X11 and other).
* Copyright 2002 Nick Kurshev
* Licence: GPL
* This interface is based on v4l2, fbvid.h, mga_vid.h projects
* and personally my ideas.
* NOTE: This interface is introduces as APP interface.
* Don't use it for driver.
* It provides multistreaming. This mean that APP can handle
* several streams simultaneously. (Example: Video capturing and video
* playback or capturing, video playback, audio encoding and so on).
*/
#ifndef VIDIXLIB_H
#define VIDIXLIB_H
#ifdef __cplusplus
extern "C" {
#endif
#include "vidix.h"
typedef void * VDL_HANDLE;
/* returns library version */
extern unsigned vdlGetVersion( void );
/* Opens corresponded video driver and returns handle
of associated stream.
path - specifies path where drivers are located.
name - specifies prefered driver name (can be NULL).
cap - specifies driver capability (TYPE_* constants).
verbose - specifies verbose level
returns !0 if ok else NULL.
*/
extern VDL_HANDLE vdlOpen(const char *path,const char *name,unsigned cap,int verbose);
/* Closes stream and corresponded driver. */
extern void vdlClose(VDL_HANDLE stream);
/* Queries driver capabilities. Return 0 if ok else errno */
extern int vdlGetCapability(VDL_HANDLE, vidix_capability_t *);
/* Queries support for given fourcc. Returns 0 if ok else errno */
extern int vdlQueryFourcc(VDL_HANDLE,vidix_fourcc_t *);
/* Returns 0 if ok else errno */
extern int vdlConfigPlayback(VDL_HANDLE, vidix_playback_t *);
/* Returns 0 if ok else errno */
extern int vdlPlaybackOn(VDL_HANDLE);
/* Returns 0 if ok else errno */
extern int vdlPlaybackOff(VDL_HANDLE);
/* Returns 0 if ok else errno */
extern int vdlPlaybackFrameSelect(VDL_HANDLE, unsigned frame_idx );
/* Returns 0 if ok else errno */
extern int vdlGetGrKeys(VDL_HANDLE, vidix_grkey_t * );
/* Returns 0 if ok else errno */
extern int vdlSetGrKeys(VDL_HANDLE, const vidix_grkey_t * );
/* Returns 0 if ok else errno */
extern int vdlPlaybackGetEq(VDL_HANDLE, vidix_video_eq_t * );
/* Returns 0 if ok else errno */
extern int vdlPlaybackSetEq(VDL_HANDLE, const vidix_video_eq_t * );
/* Returns 0 if ok else errno */
extern int vdlPlaybackGetDeint(VDL_HANDLE, vidix_deinterlace_t * );
/* Returns 0 if ok else errno */
extern int vdlPlaybackSetDeint(VDL_HANDLE, const vidix_deinterlace_t * );
/* Returns 0 if ok else errno */
extern int vdlQueryNumOemEffects(VDL_HANDLE, unsigned * number );
/* Returns 0 if ok else errno */
extern int vdlGetOemEffect(VDL_HANDLE, vidix_oem_fx_t * );
/* Returns 0 if ok else errno */
extern int vdlSetOemEffect(VDL_HANDLE, const vidix_oem_fx_t * );
/* Returns 0 if ok else errno */
extern int vdlPlaybackCopyFrame(VDL_HANDLE, vidix_dma_t * );
/* Returns 0 if DMA is available else errno (EBUSY) */
extern int vdlQueryDMAStatus( VDL_HANDLE );
/*
ABI related extensions.
Note: you should use this functions if you are using shared version
of vidix.
*/
extern vidix_capability_t * vdlAllocCapabilityS( void );
extern vidix_fourcc_t * vdlAllocFourccS( void );
extern vidix_playback_t * vdlAllocPlaybackS( void );
extern vidix_yuv_t * vdlAllocYUVS( void );
extern vidix_rect_t * vdlAllocRectS( void );
extern vidix_grkey_t * vdlAllocGrKeyS( void );
extern vidix_video_eq_t * vdlAllocVideoEqS( void );
extern vidix_deinterlace_t * vdlAllocDeinterlaceS( void );
extern vidix_dma_t * vdlAllocDmaS( void );
extern vidix_oem_fx_t * vdlAllocOemFxS( void );
extern void vdlFreeCapabilityS(vidix_capability_t * );
extern void vdlFreeFourccS( vidix_fourcc_t * );
extern void vdlFreePlaybackS( vidix_playback_t * );
extern void vdlFreeYUVS( vidix_yuv_t * );
extern void vdlFreeRectS( vidix_rect_t * );
extern void vdlFreeGrKeyS( vidix_grkey_t * );
extern void vdlFreeVideoEqS( vidix_video_eq_t * );
extern void vdlFreeDeinterlaceS( vidix_deinterlace_t * );
extern void vdlFreeDmaS( vidix_dma_t * );
extern void vdlFreeOemFxS( vidix_oem_fx_t * );
#ifdef __cplusplus
}
#endif
#endif
--- NEW FILE: README ---
VIDIX - Video Interface for *niX.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This library was designed and introduced as interface to userspace drivers
to provide DGA everywhere where it's possible (unline X11).
I hope that these drivers will be portable same as X11 (not only on *nix).
For detail on how to develop new driver see vidix.txt
--- NEW FILE: Makefile.in ---
# Makefile.in generated by automake 1.9.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
SOURCES = $(libvidix_la_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(top_srcdir)/misc/Makefile.common
subdir = src/video_out/vidix
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/_xine.m4 $(top_srcdir)/m4/aa.m4 \
$(top_srcdir)/m4/alsa.m4 $(top_srcdir)/m4/arts.m4 \
$(top_srcdir)/m4/as.m4 $(top_srcdir)/m4/caca.m4 \
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/directx.m4 \
$(top_srcdir)/m4/dl.m4 $(top_srcdir)/m4/dvdnav.m4 \
$(top_srcdir)/m4/esd.m4 $(top_srcdir)/m4/ffmpeg.m4 \
$(top_srcdir)/m4/freetype2.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
$(top_srcdir)/m4/irixal.m4 $(top_srcdir)/m4/lcmessage.m4 \
$(top_srcdir)/m4/libFLAC.m4 $(top_srcdir)/m4/libfame.m4 \
$(top_srcdir)/m4/ogg.m4 $(top_srcdir)/m4/opengl.m4 \
$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/m4/sdl.m4 $(top_srcdir)/m4/speex.m4 \
$(top_srcdir)/m4/theora.m4 $(top_srcdir)/m4/vorbis.m4 \
$(top_srcdir)/m4/xv.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
libvidix_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_libvidix_la_OBJECTS = vidixlib.lo
libvidix_la_OBJECTS = $(am_libvidix_la_OBJECTS)
@HAVE_VIDIX_TRUE@am_libvidix_la_rpath =
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libvidix_la_SOURCES)
DIST_SOURCES = $(libvidix_la_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AAINFO = @AAINFO@
AALIB_CFLAGS = @AALIB_CFLAGS@
AALIB_CONFIG = @AALIB_CONFIG@
AALIB_LIBS = @AALIB_LIBS@
ACLOCAL = @ACLOCAL@
ACLOCAL_DIR = @ACLOCAL_DIR@
ALLOCA = @ALLOCA@
ALSA_CFLAGS = @ALSA_CFLAGS@
ALSA_LIBS = @ALSA_LIBS@
ALSA_STATIC_LIB = @ALSA_STATIC_LIB@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
ARTS_CFLAGS = @ARTS_CFLAGS@
ARTS_CONFIG = @ARTS_CONFIG@
ARTS_LIBS = @ARTS_LIBS@
AS = @AS@
ASFLAGS = @ASFLAGS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_ASF_FALSE = @BUILD_ASF_FALSE@
BUILD_ASF_TRUE = @BUILD_ASF_TRUE@
BUILD_DHA_KMOD_FALSE = @BUILD_DHA_KMOD_FALSE@
BUILD_DHA_KMOD_TRUE = @BUILD_DHA_KMOD_TRUE@
BUILD_FAAD_FALSE = @BUILD_FAAD_FALSE@
BUILD_FAAD_TRUE = @BUILD_FAAD_TRUE@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CACA_CFLAGS = @CACA_CFLAGS@
CACA_CONFIG = @CACA_CONFIG@
CACA_LIBS = @CACA_LIBS@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCAS = @CCAS@
CCASCOMPILE = @CCASCOMPILE@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DEBUG_CFLAGS = @DEBUG_CFLAGS@
DEFS = @DEFS@
DEPCOMP = @DEPCOMP@
DEPDIR = @DEPDIR@
DEPMOD = @DEPMOD@
DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@
DIRECTFB_LIBS = @DIRECTFB_LIBS@
DIRECTX_AUDIO_LIBS = @DIRECTX_AUDIO_LIBS@
DIRECTX_CPPFLAGS = @DIRECTX_CPPFLAGS@
DIRECTX_VIDEO_LIBS = @DIRECTX_VIDEO_LIBS@
DLLTOOL = @DLLTOOL@
DVDNAV_CFLAGS = @DVDNAV_CFLAGS@
DVDNAV_CONFIG = @DVDNAV_CONFIG@
DVDNAV_LIBS = @DVDNAV_LIBS@
DYNAMIC_LD_LIBS = @DYNAMIC_LD_LIBS@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_VCD_FALSE = @ENABLE_VCD_FALSE@
ENABLE_VCD_TRUE = @ENABLE_VCD_TRUE@
ESD_CFLAGS = @ESD_CFLAGS@
ESD_CONFIG = @ESD_CONFIG@
ESD_LIBS = @ESD_LIBS@
EXEEXT = @EXEEXT@
EXTRA_X_CFLAGS = @EXTRA_X_CFLAGS@
EXTRA_X_LIBS = @EXTRA_X_LIBS@
F77 = @F77@
FFLAGS = @FFLAGS@
FFMPEG_CPPFLAGS = @FFMPEG_CPPFLAGS@
FFMPEG_LIBS = @FFMPEG_LIBS@
FIG2DEV = @FIG2DEV@
FREETYPE_CONFIG = @FREETYPE_CONFIG@
FT2_CFLAGS = @FT2_CFLAGS@
FT2_LIBS = @FT2_LIBS@
GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@
GLUT_LIBS = @GLUT_LIBS@
GLU_LIBS = @GLU_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_VFS_CFLAGS = @GNOME_VFS_CFLAGS@
GNOME_VFS_LIBS = @GNOME_VFS_LIBS@
GOOM_LIBS = @GOOM_LIBS@
HAVE_AA_FALSE = @HAVE_AA_FALSE@
HAVE_AA_TRUE = @HAVE_AA_TRUE@
HAVE_ALSA09_FALSE = @HAVE_ALSA09_FALSE@
HAVE_ALSA09_TRUE = @HAVE_ALSA09_TRUE@
HAVE_ALSA_FALSE = @HAVE_ALSA_FALSE@
HAVE_ALSA_TRUE = @HAVE_ALSA_TRUE@
HAVE_ARMV4L_FALSE = @HAVE_ARMV4L_FALSE@
HAVE_ARMV4L_TRUE = @HAVE_ARMV4L_TRUE@
HAVE_ARTS_FALSE = @HAVE_ARTS_FALSE@
HAVE_ARTS_TRUE = @HAVE_ARTS_TRUE@
HAVE_BSDI_CDROM = @HAVE_BSDI_CDROM@
HAVE_CACA_FALSE = @HAVE_CACA_FALSE@
HAVE_CACA_TRUE = @HAVE_CACA_TRUE@
HAVE_CDROM_IOCTLS_FALSE = @HAVE_CDROM_IOCTLS_FALSE@
HAVE_CDROM_IOCTLS_TRUE = @HAVE_CDROM_IOCTLS_TRUE@
HAVE_COREAUDIO_FALSE = @HAVE_COREAUDIO_FALSE@
HAVE_COREAUDIO_TRUE = @HAVE_COREAUDIO_TRUE@
HAVE_DARWIN_CDROM = @HAVE_DARWIN_CDROM@
HAVE_DIRECTFB_FALSE = @HAVE_DIRECTFB_FALSE@
HAVE_DIRECTFB_TRUE = @HAVE_DIRECTFB_TRUE@
HAVE_DIRECTX_FALSE = @HAVE_DIRECTX_FALSE@
HAVE_DIRECTX_TRUE = @HAVE_DIRECTX_TRUE@
HAVE_DVDNAV_FALSE = @HAVE_DVDNAV_FALSE@
HAVE_DVDNAV_TRUE = @HAVE_DVDNAV_TRUE@
HAVE_DXR3_FALSE = @HAVE_DXR3_FALSE@
HAVE_DXR3_TRUE = @HAVE_DXR3_TRUE@
HAVE_ESD_FALSE = @HAVE_ESD_FALSE@
HAVE_ESD_TRUE = @HAVE_ESD_TRUE@
HAVE_FB_FALSE = @HAVE_FB_FALSE@
HAVE_FB_TRUE = @HAVE_FB_TRUE@
HAVE_FFMMX_FALSE = @HAVE_FFMMX_FALSE@
HAVE_FFMMX_TRUE = @HAVE_FFMMX_TRUE@
HAVE_FFMPEG_FALSE = @HAVE_FFMPEG_FALSE@
HAVE_FFMPEG_TRUE = @HAVE_FFMPEG_TRUE@
HAVE_FIG2DEV_FALSE = @HAVE_FIG2DEV_FALSE@
HAVE_FIG2DEV_TRUE = @HAVE_FIG2DEV_TRUE@
HAVE_FLAC_FALSE = @HAVE_FLAC_FALSE@
HAVE_FLAC_TRUE = @HAVE_FLAC_TRUE@
HAVE_FREEBSD_CDROM = @HAVE_FREEBSD_CDROM@
HAVE_GNOME_VFS_FALSE = @HAVE_GNOME_VFS_FALSE@
HAVE_GNOME_VFS_TRUE = @HAVE_GNOME_VFS_TRUE@
HAVE_IRIXAL_FALSE = @HAVE_IRIXAL_FALSE@
HAVE_IRIXAL_TRUE = @HAVE_IRIXAL_TRUE@
HAVE_LIBFAME_FALSE = @HAVE_LIBFAME_FALSE@
HAVE_LIBFAME_TRUE = @HAVE_LIBFAME_TRUE@
HAVE_LIBMNG_FALSE = @HAVE_LIBMNG_FALSE@
HAVE_LIBMNG_TRUE = @HAVE_LIBMNG_TRUE@
HAVE_LIBPNG_FALSE = @HAVE_LIBPNG_FALSE@
HAVE_LIBPNG_TRUE = @HAVE_LIBPNG_TRUE@
HAVE_LIBRTE_FALSE = @HAVE_LIBRTE_FALSE@
HAVE_LIBRTE_TRUE = @HAVE_LIBRTE_TRUE@
HAVE_LIBSMBCLIENT_FALSE = @HAVE_LIBSMBCLIENT_FALSE@
HAVE_LIBSMBCLIENT_TRUE = @HAVE_LIBSMBCLIENT_TRUE@
HAVE_LINUX_CDROM = @HAVE_LINUX_CDROM@
HAVE_LINUX_FALSE = @HAVE_LINUX_FALSE@
HAVE_LINUX_TRUE = @HAVE_LINUX_TRUE@
HAVE_MACOSX_VIDEO_FALSE = @HAVE_MACOSX_VIDEO_FALSE@
HAVE_MACOSX_VIDEO_TRUE = @HAVE_MACOSX_VIDEO_TRUE@
HAVE_MLIB_FALSE = @HAVE_MLIB_FALSE@
HAVE_MLIB_TRUE = @HAVE_MLIB_TRUE@
HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
HAVE_OSS_FALSE = @HAVE_OSS_FALSE@
HAVE_OSS_TRUE = @HAVE_OSS_TRUE@
HAVE_POLYPAUDIO_FALSE = @HAVE_POLYPAUDIO_FALSE@
HAVE_POLYPAUDIO_TRUE = @HAVE_POLYPAUDIO_TRUE@
HAVE_SDL_FALSE = @HAVE_SDL_FALSE@
HAVE_SDL_TRUE = @HAVE_SDL_TRUE@
HAVE_SGMLTOOLS_FALSE = @HAVE_SGMLTOOLS_FALSE@
HAVE_SGMLTOOLS_TRUE = @HAVE_SGMLTOOLS_TRUE@
HAVE_SOLARIS_CDROM = @HAVE_SOLARIS_CDROM@
HAVE_SPEEX_FALSE = @HAVE_SPEEX_FALSE@
HAVE_SPEEX_TRUE = @HAVE_SPEEX_TRUE@
HAVE_STK_FALSE = @HAVE_STK_FALSE@
HAVE_STK_TRUE = @HAVE_STK_TRUE@
HAVE_SUNAUDIO_FALSE = @HAVE_SUNAUDIO_FALSE@
HAVE_SUNAUDIO_TRUE = @HAVE_SUNAUDIO_TRUE@
HAVE_SUNDGA_FALSE = @HAVE_SUNDGA_FALSE@
HAVE_SUNDGA_TRUE = @HAVE_SUNDGA_TRUE@
HAVE_SUNFB_FALSE = @HAVE_SUNFB_FALSE@
HAVE_SUNFB_TRUE = @HAVE_SUNFB_TRUE@
HAVE_SYNCFB_FALSE = @HAVE_SYNCFB_FALSE@
HAVE_SYNCFB_TRUE = @HAVE_SYNCFB_TRUE@
HAVE_THEORA_FALSE = @HAVE_THEORA_FALSE@
HAVE_THEORA_TRUE = @HAVE_THEORA_TRUE@
HAVE_V4L_FALSE = @HAVE_V4L_FALSE@
HAVE_V4L_TRUE = @HAVE_V4L_TRUE@
HAVE_VCDNAV_FALSE = @HAVE_VCDNAV_FALSE@
HAVE_VCDNAV_TRUE = @HAVE_VCDNAV_TRUE@
HAVE_VIDIX_FALSE = @HAVE_VIDIX_FALSE@
HAVE_VIDIX_TRUE = @HAVE_VIDIX_TRUE@
HAVE_VLDXVMC_FALSE = @HAVE_VLDXVMC_FALSE@
HAVE_VLDXVMC_TRUE = @HAVE_VLDXVMC_TRUE@
HAVE_VORBIS_FALSE = @HAVE_VORBIS_FALSE@
HAVE_VORBIS_TRUE = @HAVE_VORBIS_TRUE@
HAVE_W32DLL_FALSE = @HAVE_W32DLL_FALSE@
HAVE_W32DLL_TRUE = @HAVE_W32DLL_TRUE@
HAVE_WIN32_CDROM = @HAVE_WIN32_CDROM@
HAVE_X11_FALSE = @HAVE_X11_FALSE@
HAVE_X11_TRUE = @HAVE_X11_TRUE@
HAVE_XVMC_FALSE = @HAVE_XVMC_FALSE@
HAVE_XVMC_TRUE = @HAVE_XVMC_TRUE@
HAVE_XV_FALSE = @HAVE_XV_FALSE@
HAVE_XV_TRUE = @HAVE_XV_TRUE@
HAVE_XXMC_FALSE = @HAVE_XXMC_FALSE@
HAVE_XXMC_TRUE = @HAVE_XXMC_TRUE@
HAVE_ZLIB_FALSE = @HAVE_ZLIB_FALSE@
HAVE_ZLIB_TRUE = @HAVE_ZLIB_TRUE@
HOST_OS_DARWIN_FALSE = @HOST_OS_DARWIN_FALSE@
HOST_OS_DARWIN_TRUE = @HOST_OS_DARWIN_TRUE@
INCLUDED_INTL_FALSE = @INCLUDED_INTL_FALSE@
INCLUDED_INTL_TRUE = @INCLUDED_INTL_TRUE@
INCLUDES = @INCLUDES@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_M4_FALSE = @INSTALL_M4_FALSE@
INSTALL_M4_TRUE = @INSTALL_M4_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLBISON = @INTLBISON@
INTLDIR = @INTLDIR@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
IRIXAL_CFLAGS = @IRIXAL_CFLAGS@
IRIXAL_LIBS = @IRIXAL_LIBS@
IRIXAL_STATIC_LIB = @IRIXAL_STATIC_LIB@
KSTAT_LIBS = @KSTAT_LIBS@
LDFLAGS = @LDFLAGS@
LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@
LIBCDIO_LIBS = @LIBCDIO_LIBS@
LIBFAME_CFLAGS = @LIBFAME_CFLAGS@
LIBFAME_CONFIG = @LIBFAME_CONFIG@
LIBFAME_LIBS = @LIBFAME_LIBS@
LIBFFMPEG_CFLAGS = @LIBFFMPEG_CFLAGS@
LIBFLAC_CFLAGS = @LIBFLAC_CFLAGS@
LIBFLAC_LIBS = @LIBFLAC_LIBS@
LIBICONV = @LIBICONV@
LIBISO9660_LIBS = @LIBISO9660_LIBS@
LIBMODPLUG_CFLAGS = @LIBMODPLUG_CFLAGS@
LIBMODPLUG_LIBS = @LIBMODPLUG_LIBS@
LIBMPEG2_CFLAGS = @LIBMPEG2_CFLAGS@
LIBNAME = @LIBNAME@
LIBOBJS = @LIBOBJS@
LIBPNG_CONFIG = @LIBPNG_CONFIG@
LIBS = @LIBS@
LIBSMBCLIENT_LIBS = @LIBSMBCLIENT_LIBS@
LIBSTK_CFLAGS = @LIBSTK_CFLAGS@
LIBSTK_LIBS = @LIBSTK_LIBS@
LIBTOOL = $(SHELL) $(top_builddir)/libtool-nofpic
LIBTOOL_DEPS = @LIBTOOL_DEPS@
LIBVCDINFO_LIBS = @LIBVCDINFO_LIBS@
LIBVCD_CFLAGS = @LIBVCD_CFLAGS@
LIBVCD_LIBS = @LIBVCD_LIBS@
LIBVCD_SYSDEP = @LIBVCD_SYSDEP@
LINUX_CDROM_TIMEOUT = @LINUX_CDROM_TIMEOUT@
LINUX_INCLUDE = @LINUX_INCLUDE@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
LT_AGE = @LT_AGE@
LT_CURRENT = @LT_CURRENT@
LT_REVISION = @LT_REVISION@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MKNOD = @MKNOD@
MLIB_CFLAGS = @MLIB_CFLAGS@
MLIB_LIBS = @MLIB_LIBS@
MNG_LIBS = @MNG_LIBS@
MSGFMT = @MSGFMT@
NET_LIBS = @NET_LIBS@
OBJC = @OBJC@
OBJCDEPMODE = @OBJCDEPMODE@
OBJCFLAGS = @OBJCFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OGG_CFLAGS = @OGG_CFLAGS@
OGG_LIBS = @OGG_LIBS@
OPENGL_CFLAGS = @OPENGL_CFLAGS@
OPENGL_LIBS = @OPENGL_LIBS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PASS1_CFLAGS = @PASS1_CFLAGS@
PASS2_CFLAGS = @PASS2_CFLAGS@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PNG_CFLAGS = @PNG_CFLAGS@
PNG_LIBS = @PNG_LIBS@
POFILES = @POFILES@
POLYPAUDIO_CFLAGS = @POLYPAUDIO_CFLAGS@
POLYPAUDIO_LIBS = @POLYPAUDIO_LIBS@
POSUB = @POSUB@
PPC_ARCH_FALSE = @PPC_ARCH_FALSE@
PPC_ARCH_TRUE = @PPC_ARCH_TRUE@
RANLIB = @RANLIB@
RT_LIBS = @RT_LIBS@
SDL_CFLAGS = @SDL_CFLAGS@
SDL_CONFIG = @SDL_CONFIG@
SDL_LIBS = @SDL_LIBS@
SET_MAKE = @SET_MAKE@
SGMLTOOLS = @SGMLTOOLS@
SHELL = @SHELL@
SPEC_VERSION = @SPEC_VERSION@
SPEEX_CFLAGS = @SPEEX_CFLAGS@
SPEEX_LIBS = @SPEEX_LIBS@
STATIC = @STATIC@
STRIP = @STRIP@
SUNDGA_CFLAGS = @SUNDGA_CFLAGS@
SUNDGA_LIBS = @SUNDGA_LIBS@
TAR_NAME = @TAR_NAME@
THEORAENC_LIBS = @THEORAENC_LIBS@
THEORAFILE_LIBS = @THEORAFILE_LIBS@
THEORA_CFLAGS = @THEORA_CFLAGS@
THEORA_LIBS = @THEORA_LIBS@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_CFLAGS_CONFIG = @THREAD_CFLAGS_CONFIG@
THREAD_INCLUDES = @THREAD_INCLUDES@
THREAD_LIBS = @THREAD_LIBS@
THREAD_LIBS_CONFIG = @THREAD_LIBS_CONFIG@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
VORBISENC_LIBS = @VORBISENC_LIBS@
VORBISFILE_LIBS = @VORBISFILE_LIBS@
VORBIS_CFLAGS = @VORBIS_CFLAGS@
VORBIS_LIBS = @VORBIS_LIBS@
W32DLL_DEP = @W32DLL_DEP@
W32_NO_OPTIMIZE = @W32_NO_OPTIMIZE@
WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
WIN32_FALSE = @WIN32_FALSE@
WIN32_TRUE = @WIN32_TRUE@
XGETTEXT = @XGETTEXT@
XINE_ACFLAGS = @XINE_ACFLAGS@
XINE_BIN_AGE = @XINE_BIN_AGE@
XINE_BUILD_CC = @XINE_BUILD_CC@
XINE_BUILD_DATE = @XINE_BUILD_DATE@
XINE_BUILD_OS = @XINE_BUILD_OS@
XINE_CONFIG_PREFIX = @XINE_CONFIG_PREFIX@
XINE_DATADIR = @XINE_DATADIR@
XINE_FONTDIR = @XINE_FONTDIR@
XINE_FONTPATH = @XINE_FONTPATH@
XINE_IFACE_AGE = @XINE_IFACE_AGE@
XINE_LOCALEDIR = @XINE_LOCALEDIR@
XINE_LOCALEPATH = @XINE_LOCALEPATH@
XINE_MAJOR = @XINE_MAJOR@
XINE_MINOR = @XINE_MINOR@
XINE_PLUGINDIR = @XINE_PLUGINDIR@
XINE_PLUGINPATH = @XINE_PLUGINPATH@
XINE_PLUGIN_MIN_SYMS = @XINE_PLUGIN_MIN_SYMS@
XINE_SCRIPTPATH = @XINE_SCRIPTPATH@
XINE_SUB = @XINE_SUB@
XVMC_LIB = @XVMC_LIB@
XV_LIB = @XV_LIB@
XXMC_LIB = @XXMC_LIB@
X_CFLAGS = @X_CFLAGS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBS = @X_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
ZLIB_INCLUDES = @ZLIB_INCLUDES@
ZLIB_LIBS = @ZLIB_LIBS@
ZLIB_LIBS_CONFIG = @ZLIB_LIBS_CONFIG@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__fastdepOBJC_FALSE = @am__fastdepOBJC_FALSE@
am__fastdepOBJC_TRUE = @am__fastdepOBJC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
w32_path = @w32_path@
XINE_LIB = $(top_builddir)/src/xine-engine/libxine.la
EXTRA_DIST = README vidix.txt
SUBDIRS = drivers
AM_CFLAGS = @STATIC@
@HAVE_VIDIX_TRUE@vidix_lib = libvidix.la
noinst_LTLIBRARIES = $(vidix_lib)
libvidix_la_SOURCES = vidixlib.c
libvidix_la_LIBADD = $(DYNAMIC_LD_LIBS)
noinst_HEADERS = fourcc.h vidix.h vidixlib.h
AM_CPPFLAGS = -I$(top_srcdir)/src/video_out/vidix \
-I$(top_builddir)/src/video_out/libdha
all: all-recursive
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/misc/Makefile.common $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/video_out/vidix/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/video_out/vidix/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libvidix.la: $(libvidix_la_OBJECTS) $(libvidix_la_DEPENDENCIES)
$(LINK) $(am_libvidix_la_rpath) $(libvidix_la_LDFLAGS) $(libvidix_la_OBJECTS) $(libvidix_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vidixlib.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(mkdir_p) $(distdir)/../../../misc
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
clean: clean-recursive
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
clean clean-generic clean-libtool clean-noinstLTLIBRARIES \
clean-recursive ctags ctags-recursive distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-recursive distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-data-hook install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
uninstall-hook uninstall-info-am
$(XINE_LIB):
@cd $(top_srcdir)/src/xine-engine && $(MAKE)
install-data-hook:
@if test $$MAKELEVEL -le 4 ; then \
if test -x "$(top_srcdir)/post-install.sh" ; then \
$(top_srcdir)/post-install.sh ; \
fi \
fi
pass1:
@$(MAKE) MULTIPASS_CFLAGS="$(PASS1_CFLAGS)"
pass2:
@$(MAKE) MULTIPASS_CFLAGS="$(PASS2_CFLAGS)"
debug:
@$(MAKE) CFLAGS="$(DEBUG_CFLAGS)"
install-debug: debug
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
@list='$(SUBDIRS)'; for subdir in $$list; do \
(cd $$subdir && $(MAKE) $@) || exit; \
done;
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
$(install_sh) -d $(DESTDIR)$(includedir)/xine
@list='$(include_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/xine/$$p"; \
$(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/xine/$$p; \
done
uninstall-includeHEADERS:
@$(NORMAL_UNINSTALL)
list='$(include_HEADERS)'; for p in $$list; do \
rm -f $(DESTDIR)$(includedir)/xine/$$p; \
done
uninstall-hook:
@if echo '$(libdir)' | egrep ^'$(XINE_PLUGINDIR)' >/dev/null; then \
list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p="`echo $$p | sed -e 's/\.la$$/\.so/g;s|^.*/||'`"; \
echo " rm -f $(DESTDIR)$(libdir)/$$p"; \
rm -f $(DESTDIR)$(libdir)/$$p; \
done; \
fi
mostlyclean-generic:
-rm -f *~ \#* .*~ .\#*
maintainer-clean-generic:
-@echo "This command is intended for maintainers to use;"
-@echo "it deletes files that may require special tools to rebuild."
-rm -f Makefile.in
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
--- NEW FILE: Makefile.am ---
include $(top_srcdir)/misc/Makefile.common
EXTRA_DIST = README vidix.txt
SUBDIRS = drivers
AM_CFLAGS = @STATIC@
if HAVE_VIDIX
vidix_lib = libvidix.la
endif
noinst_LTLIBRARIES = $(vidix_lib)
libvidix_la_SOURCES = vidixlib.c
libvidix_la_LIBADD = $(DYNAMIC_LD_LIBS)
noinst_HEADERS = fourcc.h vidix.h vidixlib.h
AM_CPPFLAGS = -I$(top_srcdir)/src/video_out/vidix \
-I$(top_builddir)/src/video_out/libdha
--- NEW FILE: vidix.txt ---
VIDIX - VIDeo Interface for *niX
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This interface was designed and introduced as interface to userspace drivers
to provide DGA everywhere where it's possible (unline X11).
I hope that these drivers will be portable same as X11 (not only on *nix).
What is it:
- It's portable successor of mga_vid technology which is located in user-space.
- Unlikely X11 it's provides DGA everywhere where it's possible.
- Unlikely v4l it provides interface for video playback
- Unlikely linux's drivers it uses mathematics library.
Why it was developed:
As said Vladimir Dergachev
(http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/gatos/km/km.rfc.txt):
"0) Motivation
v4l, v4l2 and Xv are all suffering from the same problem: attempt to fit
existing multimedia devices into a fixed scheme."
Well - I tried to implement something similar by motivation.
How it works:
~~~~~~~~~~~~~
This interface is almost finished. But I guess it can be expanded by developer's
requests.
So any suggestions, reports, criticism are gladly accepted.
1) APP calls vixGetVersion to check age of driver ;)
2) APP calls vixProbe. Driver should return 0 if it can handle something in PC.
3) APP calls vixGetCapability. Driver should return filled
vidix_capability_t.type field at least.
4) If above calls were succesful then APP calls vixInit function
(Driver can have not exported this function in this case call will be
skiped).
5) After initializing of driver APP calls vixGetCapability again
(In this case driver must fill every field of struct)
6) APP calls vixQueryFourcc. Driver should answer - can it configure
video memory for given fourcc or not.
7) APP calls vixConfigPlayback. Driver should prepare BES on this call.
APP pass to driver following info:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vidix_playback_t.fourcc - contains fourcc of movie
vidix_playback_t.capability - currently contsinas copy of vidix_capability_t.flags
vidix_playback_t.blend_factor- currently unused
vidix_playback_t.src - x,y,w,h fields contain original movie size
(in pixels) x and y often are nulls.
vidix_playback_t.src.pitch.y These fields contain source pitches
vidix_playback_t.src.pitch.u - for each Y,U,V plane in bytes.
vidix_playback_t.src.pitch.v (For packed fourcc only Y value is used)
They are hints for driver to use same destinition
pitches as in source memory (to speed up
memcpy process).
Note: when source pitches are unknown or
variable these field will be filled into 0.
vidix_playback_t.dest - x,y,w,h fields contains destinition rectange
on the screen in pixels.
vidix_playback_t.num_frames - maximal # of frames which can be used by APP.
(Currently 10).
Driver should fill following fields:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vidix_playback_t.num_frames - real # of frames which will be used by driver.
(Should be less or equal to app's num_frames).
vidix_playback_t.dest.pitch.y These fields should contain alignment
vidix_playback_t.dest.pitch.u - for each Y,U,V plane in bytes.
vidix_playback_t.dest.pitch.v (For packed fourcc only Y value is used)
vidix_playback_t.frame_size - Driver should tell to app which size of
source frame (src.w and src.h) should
use APP (according to pitches and offsets)
vidix_playback_t.offsets - offsets from begin of BES memory for each frame
vidix_playback_t.offset.y These field should contain offset
vidix_playback_t.offset.u - for each Y,U,V plane within frame.
vidix_playback_t.offset.v (For packed fourcc only Y value is used)
vidix_playback_t.dga_addr - Address of BES memory.
Also see this picture:
VIDEO MEMORY layout:
+----------- It's begin of video memory End of video memory--------------+
| |
v v
[ RGB memory | YUV memory | UNDEF ]
^
|
+---- begin of BES memory
BES MEMORY layout:
+-------- begin of BES memory
|
v
[ | | | | |
^ ^ ^ ^ ^
| | | | + BEGIN of second frame
| | | + BEGIN of V plane
| | + BEGIN of U plane
| +------- BEGIN of Y plane
|
+--------- BEGIN of first frame
This means that in general case:
offset of frame != offset of BES
offset of Y plane != offset of first frame
But often: vidix_playback_t.offsets[0] = vidix_playback_t.offset.y = 0;
Formula: (For Y plane) copy source to:
vidix_playback_t.dga_addr +
vidix_playback_t.offsets[i] +
vidix_playback_t.offset.y
8) APP calls vixPlaybackOn. Driver should activate BES on this call.
9) PLAYBACK. Driver should sleep here ;)
But during playback can be called:
vixFrameSelect (if this function is exported)
Driver should prepare and activate corresponded frame.
This function is used only for double and trilpe buffering and
never used for single buffering playback.
vixGet(Set)GrKeys (if this function is exported)
This interface should be tuned but intriduced for overlapped playback
and video effects (TYPE_FX)
vixPlaybackGet(Set)Eq (if this function is exported)
For color correction.
10) APP calls vixPlaybackOff. Driver should deactivate BES on this call.
11) If vixDestroy is defined APP calls this function before unloading driver
from memory.
What functions are mandatory:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vixGetVersion
vixProbe
vixGetCapability
vixQueryFourcc
vixConfigPlayback
vixPlaybackOn
vixPlaybackOff
All other functions are optionaly.
BUSMASTERING
************
Busmastering is technique to implement data transfer through DMA.
This technique is intended to free CPU for other useful work to
speedup movie playback. The speedup will be different on different
CPUs OSes and videocards. Only thing which SHOULD be implemented
it's the fact that frame should be transfered faster than 1/fps.
(I.e. faster than 33ms for 30 fps or faster than 40ms for 25 fps)
VIDIX implementation of BM (busmastering) is slightly specific.
During driver development you should keep in mind the next rules:
1. BM is implemented as parallel process which should work
simultaneously with frame decoding.
2. To have possibility to use busmastering by non-ROOT users
driver should rather call functions from libdha than from libc.
(Example: driver should call bm_lock_mem instead of mlock)
3. To speedup data transfer player will pass pointer to the DMA buffer
which will have the same structure (planes and strides) as video memory
(In this connexion driver should allocate frames in video memory
same as if BM would not be implemented).
Interface:
~~~~~~~~~~
The interface of BM is implemented through 2 functions:
vixPlaybackCopyFrame
vixQueryDMAStatus
vixPlaybackCopyFrame
should prepare engine to copy frame from
system memory into video framebuffer. After that driver should
send command into engine to start data transfer and return
control immediatedly.
The structure vidix_dma_s in details:
typedef struct vidix_dma_s
{
/*
app -> driver.
Virtual address of source.
Note: source buffer is allocated by using malloc
or memalign();
*/
void * src;
/*
app -> driver.
Destinition offset within of video memory.
It will point offset within of YUV memory where
destinition data should be stored.
*/
unsigned dest_offset;
/* app -> driver. Size of data to be transfered in bytes. */
unsigned size;
/*
can accept ORed values of BM_DMA* definitions
BM_DMA_ASYNC - default value which indicates that transactiion
should work asynchronously.
BM_DMA_SYNC - may be ignored due speedup reasons
BM_DMA_FIXED_BUFFS - indicates that player was started by ROOT
and source DMA buffers were already locked in memory
through mlock().
/* app -> driver: idx of src buffer.
if BM_DMA_FIXED_BUFFS flags is set then this field
indicates which from buffers currently is passed
into driver. This field maybe ignored by driver but
it would be better to use that for minor speedup
of engine preparing. */
unsigned idx;
/* for internal use by driver.
Driver may use them on its opinion */
void * internal[VID_PLAY_MAXFRAMES];
}vidix_dma_t;
vixQueryDMAStatus
should check out DMA status and return 1 if BM is busy
and 0 otherwise. Note: this function shouldn't wait any
changes in DMA state.
A few words about of non-linux systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Well, there is only one problem which stops us to use BM on
nono-linux systems: it's lacking of possibility to perform
convertion from virtual to physical address in user-space.
This problem is sloved by so-called dhahelper driver for
linux. What about of other OSes then this driver requires
to be ported first. (Of course, except of DOS and DOS32
where these convertions are unnecessary).
Useful links:
~~~~~~~~~~~~~
Guide to DTV http://www.digitaltelevision.com/dtvbook/toc.shtml
Fourcc http://www.webartz.com/fourcc/
MPEG http://www.mpeg.org/MPEG/index.html
Analog colors http://www.miranda.com/en/app_notes/TN/TN-05/TN-05.htm
Please send your suggestions, reports, feedback to mplayerxp-general@lists.sourceforge.net
Best regards! Nick Kurshev.
--- NEW FILE: vidixlib.c ---
/*
* vidixlib.c
* VIDIXLib - Library for VIDeo Interface for *niX
* This interface is introduced as universal one to MPEG decoder,
* BES == Back End Scaler and YUV2RGB hw accelerators.
* In the future it may be expanded up to capturing and audio things.
* Main goal of this this interface imlpementation is providing DGA
* everywhere where it's possible (unlike X11 and other).
* Copyright 2002 Nick Kurshev
* Licence: GPL
* This interface is based on v4l2, fbvid.h, mga_vid.h projects
* and personally my ideas.
* NOTE: This interface is introduces as APP interface.
* Don't use it for driver.
* It provides multistreaming. This mean that APP can handle
* several streams simultaneously. (Example: Video capturing and video
* playback or capturing, video playback, audio encoding and so on).
*/
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <inttypes.h>
#include <dlfcn.h> /* GLIBC specific. Exists under cygwin too! */
#include <dirent.h>
#include "vidixlib.h"
#include "bswap.h"
#define t_vdl(p) (((vdl_stream_t *)p))
typedef struct vdl_stream_s
{
void * handle;
int (*get_caps)(vidix_capability_t *);
int (*query_fourcc)(vidix_fourcc_t *);
int (*config_playback)(vidix_playback_t *);
int (*playback_on)( void );
int (*playback_off)( void );
/* Functions below can be missed in driver ;) */
int (*init)(const char *);
void (*destroy)(void);
int (*frame_sel)( unsigned frame_idx );
int (*get_eq)( vidix_video_eq_t * );
int (*set_eq)( const vidix_video_eq_t * );
int (*get_deint)( vidix_deinterlace_t * );
int (*set_deint)( const vidix_deinterlace_t * );
int (*copy_frame)( const vidix_dma_t * );
int (*query_dma)( void );
int (*get_gkey)( vidix_grkey_t * );
int (*set_gkey)( const vidix_grkey_t * );
int (*get_num_fx)( unsigned * );
int (*get_fx)( vidix_oem_fx_t * );
int (*set_fx)( const vidix_oem_fx_t * );
}vdl_stream_t;
static char drv_name[FILENAME_MAX];
static int dl_idx = -1;
/* currently available driver for static linking */
static const char* const drv_snames[] = {
#ifdef VIDIX_BUILD_STATIC
"genfb_",
"mach64_",
"mga_crtc2_",
"mga_",
"nvidia_",
"pm2_",
"pm3_",
"radeo_",
"rage128_",
#endif
NULL
};
extern unsigned vdlGetVersion( void )
{
return VIDIX_VERSION;
}
static void* dlsymm(void* handle, const char* fce)
{
char b[100];
#if defined(__OpenBSD__) && !defined(__ELF__)
b[0] = '_';
b[1] = 0;
#else
b[0] = 0;
#endif
if (dl_idx >= 0) strcat(b, drv_snames[dl_idx]);
strcat(b, fce);
//printf("Handle %p %s\n", handle, b);
return dlsym(handle, b);
}
static int vdl_fill_driver(VDL_HANDLE stream)
{
t_vdl(stream)->init = dlsymm(t_vdl(stream)->handle,"vixInit");
t_vdl(stream)->destroy = dlsymm(t_vdl(stream)->handle,"vixDestroy");
t_vdl(stream)->get_caps = dlsymm(t_vdl(stream)->handle,"vixGetCapability");
t_vdl(stream)->query_fourcc = dlsymm(t_vdl(stream)->handle,"vixQueryFourcc");
t_vdl(stream)->config_playback= dlsymm(t_vdl(stream)->handle,"vixConfigPlayback");
t_vdl(stream)->playback_on = dlsymm(t_vdl(stream)->handle,"vixPlaybackOn");
t_vdl(stream)->playback_off = dlsymm(t_vdl(stream)->handle,"vixPlaybackOff");
t_vdl(stream)->frame_sel = dlsymm(t_vdl(stream)->handle,"vixPlaybackFrameSelect");
t_vdl(stream)->get_eq = dlsymm(t_vdl(stream)->handle,"vixPlaybackGetEq");
t_vdl(stream)->set_eq = dlsymm(t_vdl(stream)->handle,"vixPlaybackSetEq");
t_vdl(stream)->get_gkey = dlsymm(t_vdl(stream)->handle,"vixGetGrKeys");
t_vdl(stream)->set_gkey = dlsymm(t_vdl(stream)->handle,"vixSetGrKeys");
t_vdl(stream)->get_deint = dlsymm(t_vdl(stream)->handle,"vixPlaybackGetDeint");
t_vdl(stream)->set_deint = dlsymm(t_vdl(stream)->handle,"vixPlaybackSetDeint");
t_vdl(stream)->copy_frame = dlsymm(t_vdl(stream)->handle,"vixPlaybackCopyFrame");
t_vdl(stream)->query_dma = dlsymm(t_vdl(stream)->handle,"vixQueryDMAStatus");
t_vdl(stream)->get_num_fx = dlsymm(t_vdl(stream)->handle,"vixQueryNumOemEffects");
t_vdl(stream)->get_fx = dlsymm(t_vdl(stream)->handle,"vixGetOemEffect");
t_vdl(stream)->set_fx = dlsymm(t_vdl(stream)->handle,"vixSetOemEffect");
/* check driver viability */
if(!( t_vdl(stream)->get_caps && t_vdl(stream)->query_fourcc &&
t_vdl(stream)->config_playback && t_vdl(stream)->playback_on &&
t_vdl(stream)->playback_off))
{
printf("vidixlib: Incomplete driver: some of essential features are missed in it.\n");
return 0;
}
return 1;
}
#ifndef RTLD_GLOBAL
#define RTLD_GLOBAL RTLD_LAZY
#endif
#ifndef RTLD_NOW
#define RTLD_NOW RTLD_LAZY
#endif
static int vdl_probe_driver(VDL_HANDLE stream,const char *path,const char *name,unsigned cap,int verbose)
{
vidix_capability_t vid_cap;
unsigned (*_ver)(void);
int (*_probe)(int,int);
int (*_cap)(vidix_capability_t*);
strncpy(drv_name,path,sizeof(drv_name));
drv_name[sizeof(drv_name) - 1] = '\0';
strncat(drv_name,name,sizeof(drv_name) - strlen(drv_name) - 1);
if(verbose) printf("vidixlib: PROBING: %s\n",drv_name);
{
const char* slash = strrchr(drv_name, '/');
if (slash) {
for (dl_idx = 0; drv_snames[dl_idx]; dl_idx++) {
if (!strncmp(slash + 1, drv_snames[dl_idx], strlen(drv_snames[dl_idx])))
break; // locate the name
}
if (!drv_snames[dl_idx]) dl_idx = -1;
}
}
if (dl_idx < 0)
if(!(t_vdl(stream)->handle = dlopen(drv_name,RTLD_LAZY|RTLD_GLOBAL))) {
if(verbose) printf("vidixlib: %s not driver: %s\n",drv_name,dlerror());
return 0;
}
_ver = dlsymm(t_vdl(stream)->handle,"vixGetVersion");
_probe = dlsymm(t_vdl(stream)->handle,"vixProbe");
_cap = dlsymm(t_vdl(stream)->handle,"vixGetCapability");
if(_ver)
{
if((*_ver)() != VIDIX_VERSION)
{
if(verbose) printf("vidixlib: %s has wrong version\n",drv_name);
err:
dlclose(t_vdl(stream)->handle);
t_vdl(stream)->handle = 0;
dl_idx = -1;
return 0;
}
}
else
{
fatal_err:
if(verbose) printf("vidixlib: %s has no function definition\n",drv_name);
goto err;
}
if(_probe) { if((*_probe)(verbose,PROBE_NORMAL) != 0) goto err; }
else goto fatal_err;
if(_cap) { if((*_cap)(&vid_cap) != 0) goto err; }
else goto fatal_err;
if((vid_cap.type & cap) != cap)
{
if(verbose) printf("vidixlib: Found %s but has no required capability\n",drv_name);
goto err;
}
if(verbose) printf("vidixlib: %s probed o'k\n",drv_name);
return 1;
}
static int vdl_find_driver(VDL_HANDLE stream,const char *path,unsigned cap,int verbose)
{
DIR *dstream;
struct dirent *name;
int done = 0;
if(!(dstream = opendir(path))) return 0;
while(!done)
{
name = readdir(dstream);
if(name)
{
if(name->d_name[0] != '.' && strstr(name->d_name, ".so"))
if(vdl_probe_driver(stream,path,name->d_name,cap,verbose)) break;
}
else done = 1;
}
closedir(dstream);
return done?0:1;
}
VDL_HANDLE vdlOpen(const char *path,const char *name,unsigned cap,int verbose)
{
vdl_stream_t *stream;
const char *drv_args=NULL;
int errcode;
if(!(stream = malloc(sizeof(vdl_stream_t)))) return NULL;
memset(stream,0,sizeof(vdl_stream_t));
if(name)
{
unsigned (*ver)(void);
int (*probe)(int,int);
unsigned version = 0;
unsigned char *arg_sep;
arg_sep = strchr(name,':');
if(arg_sep) { *arg_sep='\0'; drv_args = &arg_sep[1]; }
strncpy(drv_name,path,sizeof(drv_name));
drv_name[sizeof(drv_name) - 1] = '\0';
strncat(drv_name,name,sizeof(drv_name) - strlen(drv_name) - 1);
{
const char* slash = strrchr(drv_name, '/');
if (slash) {
for (dl_idx = 0; drv_snames[dl_idx]; dl_idx++) {
if (!strncmp(slash + 1, drv_snames[dl_idx], strlen(drv_snames[dl_idx])))
break; // locate the name
}
if (!drv_snames[dl_idx]) dl_idx = -1;
}
}
if (dl_idx < 0)
if(!(t_vdl(stream)->handle = dlopen(drv_name,RTLD_NOW|RTLD_GLOBAL)))
{
if (verbose)
printf("vidixlib: dlopen error: %s\n", dlerror());
err:
vdlClose(stream);
return NULL;
}
ver = dlsymm(t_vdl(stream)->handle,"vixGetVersion");
if(ver) version = (*ver)();
if(version != VIDIX_VERSION)
goto err;
probe = dlsymm(t_vdl(stream)->handle,"vixProbe");
if(probe) { if((*probe)(verbose,PROBE_FORCE)!=0) goto err; }
else goto err;
fill:
if(!vdl_fill_driver(stream)) goto err;
goto ok;
}
else
if(vdl_find_driver(stream,path,cap,verbose))
{
if(verbose) printf("vidixlib: will use %s driver\n",drv_name);
goto fill;
}
else goto err;
ok:
if(t_vdl(stream)->init)
{
if(verbose) printf("vidixlib: Attempt to initialize driver at: %p\n",t_vdl(stream)->init);
if((errcode=t_vdl(stream)->init(drv_args))!=0)
{
if(verbose) printf("vidixlib: Can't init driver: %s\n",strerror(errcode));
goto err;
}
}
if(verbose) printf("vidixlib: '%s'successfully loaded\n",drv_name);
return stream;
}
void vdlClose(VDL_HANDLE stream)
{
if(t_vdl(stream)->destroy) t_vdl(stream)->destroy();
if(t_vdl(stream)->handle) dlclose(t_vdl(stream)->handle);
memset(stream,0,sizeof(vdl_stream_t)); /* <- it's not stupid */
free(stream);
dl_idx = -1;
}
int vdlGetCapability(VDL_HANDLE handle, vidix_capability_t *cap)
{
return t_vdl(handle)->get_caps(cap);
}
#define MPLAYER_IMGFMT_RGB (('R'<<24)|('G'<<16)|('B'<<8))
#define MPLAYER_IMGFMT_BGR (('B'<<24)|('G'<<16)|('R'<<8))
#define MPLAYER_IMGFMT_RGB_MASK 0xFFFFFF00
static uint32_t normalize_fourcc(uint32_t fourcc)
{
if((fourcc & MPLAYER_IMGFMT_RGB_MASK) == (MPLAYER_IMGFMT_RGB|0) ||
(fourcc & MPLAYER_IMGFMT_RGB_MASK) == (MPLAYER_IMGFMT_BGR|0))
return bswap_32(fourcc);
else return fourcc;
}
int vdlQueryFourcc(VDL_HANDLE handle,vidix_fourcc_t *f)
{
f->fourcc = normalize_fourcc(f->fourcc);
return t_vdl(handle)->query_fourcc(f);
}
int vdlConfigPlayback(VDL_HANDLE handle,vidix_playback_t *p)
{
p->fourcc = normalize_fourcc(p->fourcc);
return t_vdl(handle)->config_playback(p);
}
int vdlPlaybackOn(VDL_HANDLE handle)
{
return t_vdl(handle)->playback_on();
}
int vdlPlaybackOff(VDL_HANDLE handle)
{
return t_vdl(handle)->playback_off();
}
int vdlPlaybackFrameSelect(VDL_HANDLE handle, unsigned frame_idx )
{
return t_vdl(handle)->frame_sel ? t_vdl(handle)->frame_sel(frame_idx) : ENOSYS;
}
int vdlPlaybackGetEq(VDL_HANDLE handle, vidix_video_eq_t * e)
{
return t_vdl(handle)->get_eq ? t_vdl(handle)->get_eq(e) : ENOSYS;
}
int vdlPlaybackSetEq(VDL_HANDLE handle, const vidix_video_eq_t * e)
{
return t_vdl(handle)->set_eq ? t_vdl(handle)->set_eq(e) : ENOSYS;
}
int vdlPlaybackCopyFrame(VDL_HANDLE handle, vidix_dma_t * f)
{
return t_vdl(handle)->copy_frame ? t_vdl(handle)->copy_frame(f) : ENOSYS;
}
int vdlQueryDMAStatus(VDL_HANDLE handle )
{
return t_vdl(handle)->query_dma ? t_vdl(handle)->query_dma() : ENOSYS;
}
int vdlGetGrKeys(VDL_HANDLE handle, vidix_grkey_t * k)
{
return t_vdl(handle)->get_gkey ? t_vdl(handle)->get_gkey(k) : ENOSYS;
}
int vdlSetGrKeys(VDL_HANDLE handle, const vidix_grkey_t * k)
{
return t_vdl(handle)->set_gkey ? t_vdl(handle)->set_gkey(k) : ENOSYS;
}
int vdlPlaybackGetDeint(VDL_HANDLE handle, vidix_deinterlace_t * d)
{
return t_vdl(handle)->get_deint ? t_vdl(handle)->get_deint(d) : ENOSYS;
}
int vdlPlaybackSetDeint(VDL_HANDLE handle, const vidix_deinterlace_t * d)
{
return t_vdl(handle)->set_deint ? t_vdl(handle)->set_deint(d) : ENOSYS;
}
int vdlQueryNumOemEffects(VDL_HANDLE handle, unsigned * number )
{
return t_vdl(handle)->get_num_fx ? t_vdl(handle)->get_num_fx(number) : ENOSYS;
}
int vdlGetOemEffect(VDL_HANDLE handle, vidix_oem_fx_t * f)
{
return t_vdl(handle)->get_fx ? t_vdl(handle)->get_fx(f) : ENOSYS;
}
int vdlSetOemEffect(VDL_HANDLE handle, const vidix_oem_fx_t * f)
{
return t_vdl(handle)->set_fx ? t_vdl(handle)->set_fx(f) : ENOSYS;
}
/* ABI related extensions */
vidix_capability_t * vdlAllocCapabilityS( void )
{
vidix_capability_t *retval;
retval=malloc(sizeof(vidix_capability_t));
if(retval) memset(retval,0,sizeof(vidix_capability_t));
return retval;
}
vidix_fourcc_t * vdlAllocFourccS( void )
{
vidix_fourcc_t *retval;
retval=malloc(sizeof(vidix_fourcc_t));
if(retval) memset(retval,0,sizeof(vidix_fourcc_t));
return retval;
}
vidix_yuv_t * vdlAllocYUVS( void )
{
vidix_yuv_t *retval;
retval=malloc(sizeof(vidix_yuv_t));
if(retval) memset(retval,0,sizeof(vidix_yuv_t));
return retval;
}
vidix_rect_t * vdlAllocRectS( void )
{
vidix_rect_t *retval;
retval=malloc(sizeof(vidix_rect_t));
if(retval) memset(retval,0,sizeof(vidix_rect_t));
return retval;
}
vidix_playback_t * vdlAllocPlaybackS( void )
{
vidix_playback_t *retval;
retval=malloc(sizeof(vidix_playback_t));
if(retval) memset(retval,0,sizeof(vidix_playback_t));
return retval;
}
vidix_grkey_t * vdlAllocGrKeyS( void )
{
vidix_grkey_t *retval;
retval=malloc(sizeof(vidix_grkey_t));
if(retval) memset(retval,0,sizeof(vidix_grkey_t));
return retval;
}
vidix_video_eq_t * vdlAllocVideoEqS( void )
{
vidix_video_eq_t *retval;
retval=malloc(sizeof(vidix_video_eq_t));
if(retval) memset(retval,0,sizeof(vidix_video_eq_t));
return retval;
}
vidix_deinterlace_t * vdlAllocDeinterlaceS( void )
{
vidix_deinterlace_t *retval;
retval=malloc(sizeof(vidix_deinterlace_t));
if(retval) memset(retval,0,sizeof(vidix_deinterlace_t));
return retval;
}
vidix_dma_t * vdlAllocDmaS( void )
{
vidix_dma_t *retval;
retval=malloc(sizeof(vidix_dma_t));
if(retval) memset(retval,0,sizeof(vidix_dma_t));
return retval;
}
vidix_oem_fx_t * vdlAllocOemFxS( void )
{
vidix_oem_fx_t *retval;
retval=malloc(sizeof(vidix_oem_fx_t));
if(retval) memset(retval,0,sizeof(vidix_oem_fx_t));
return retval;
}
void vdlFreeCapabilityS(vidix_capability_t * _this) { free(_this); }
void vdlFreeFourccS( vidix_fourcc_t * _this ) { free(_this); }
void vdlFreePlaybackS( vidix_playback_t * _this ) { free(_this); }
void vdlFreeYUVS( vidix_yuv_t * _this) { free(_this); }
void vdlFreeRectS( vidix_rect_t * _this) { free(_this); }
void vdlFreeGrKeyS( vidix_grkey_t * _this) { free(_this); }
void vdlFreeVideoEqS( vidix_video_eq_t * _this) { free(_this); }
void vdlFreeDeinterlaceS( vidix_deinterlace_t * _this) { free(_this); }
void vdlFreeDmaS( vidix_dma_t * _this) { free(_this); }
void vdlFreeOemFxS( vidix_oem_fx_t * _this) { free(_this); }