summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libvo/video_out.h54
-rw-r--r--libvo/video_out_internal.h4
-rw-r--r--libvo/vo_3dfx.c9
-rw-r--r--libvo/vo_aa.c9
-rw-r--r--libvo/vo_dga.c14
-rw-r--r--libvo/vo_directfb.c9
-rw-r--r--libvo/vo_dxr3.c10
-rw-r--r--libvo/vo_fbdev.c9
-rw-r--r--libvo/vo_fsdga.c12
-rw-r--r--libvo/vo_ggi.c10
-rw-r--r--libvo/vo_gl.c10
-rw-r--r--libvo/vo_gl2.c10
-rw-r--r--libvo/vo_md5.c8
-rw-r--r--libvo/vo_mga.c9
-rw-r--r--libvo/vo_mpegpes.c9
-rw-r--r--libvo/vo_null.c9
-rw-r--r--libvo/vo_odivx.c10
-rw-r--r--libvo/vo_pgm.c9
-rw-r--r--libvo/vo_png.c10
-rw-r--r--libvo/vo_sdl.c10
-rw-r--r--libvo/vo_svga.c10
-rw-r--r--libvo/vo_syncfb.c9
-rw-r--r--libvo/vo_tdfxfb.c8
-rw-r--r--libvo/vo_vesa.c10
-rw-r--r--libvo/vo_x11.c9
-rw-r--r--libvo/vo_xmga.c10
-rw-r--r--libvo/vo_xv.c9
-rw-r--r--libvo/vo_xvidix.c10
-rw-r--r--libvo/vo_zr.c10
-rw-r--r--libvo/vosub_vidix.h3
30 files changed, 306 insertions, 16 deletions
diff --git a/libvo/video_out.h b/libvo/video_out.h
index 250837b4e6..dce60223c1 100644
--- a/libvo/video_out.h
+++ b/libvo/video_out.h
@@ -10,6 +10,7 @@
#include "font_load.h"
#include "img_format.h"
+#include "../vidix/vidix.h"
#define VO_EVENT_EXPOSE 1
#define VO_EVENT_RESIZE 2
@@ -27,10 +28,53 @@ typedef struct vo_info_s
const char *comment;
} vo_info_t;
+/* Direct access to BES */
+typedef struct bes_da_s
+{
+ vidix_rect_t dest; /* This field should be filled by x,y,w,h
+ from vidix:src but pitches from
+ vidix:dest */
+ int flags; /* Probably will work only when flag == 0 */
+ /* memory model */
+ unsigned frame_size; /* destinition frame size */
+ unsigned num_frames; /* number available frames */
+ unsigned offsets[VID_PLAY_MAXFRAMES]; /* relative offset of each frame from begin of video memory */
+ vidix_yuv_t offset; /* relative offsets within frame for yuv planes */
+ void* dga_addr; /* linear address of BES */
+}bes_da_t;
+
+/*
+ Video Accelearted Architecture.
+ Every field of this structure can be set to NULL that means that
+ features is not supported
+*/
+typedef struct vo_vaa_s
+{
+ uint32_t flags; /* currently undefined */
+ /*
+ * Query Direct Access to BES
+ * info - information to be filled
+ * returns: 0 on success errno on error.
+ */
+ int (*query_bes_da)(bes_da_t *info);
+ int (*get_video_eq)(vidix_video_eq_t *info);
+ int (*set_video_eq)(const vidix_video_eq_t *info);
+ int (*get_num_fx)(unsigned *info);
+ int (*get_oem_fx)(vidix_oem_fx_t *info);
+ int (*set_oem_fx)(const vidix_oem_fx_t *info);
+ int (*set_deint)(const vidix_deinterlace_t *info);
+}vo_vaa_t;
+
typedef struct vo_functions_s
{
+ /*
+ * Preinitializes driver (real INITIALIZATION)
+ * arg - currently it's vo_subdevice
+ * returns: zero on successful initialization, non-zero on error.
+ */
+ uint32_t (*preinit)(const char *arg);
/*
- * Initialize the display driver.
+ * Initialize (means CONFIGURE) the display driver.
* params:
* width,height: image source size
* d_width,d_height: size of the requested window size, just a hint
@@ -93,6 +137,14 @@ typedef struct vo_functions_s
*/
void (*uninit)(void);
+ /*
+ * Query Video Accelerated Architecture information.
+ * params:
+ * vaa: address of struct to be filled.
+ * (Note: driver should memset it to ZERO if it doesn't support vaa.)
+ */
+ void (*query_vaa)(vo_vaa_t *vaa);
+
} vo_functions_t;
char *vo_format_name(int format);
diff --git a/libvo/video_out_internal.h b/libvo/video_out_internal.h
index 1cf94f2ad7..fbf51b478d 100644
--- a/libvo/video_out_internal.h
+++ b/libvo/video_out_internal.h
@@ -30,9 +30,12 @@ static void flip_page(void);
static void check_events(void);
static void uninit(void);
static uint32_t query_format(uint32_t format);
+static uint32_t preinit(const char *);
+static void query_vaa(vo_vaa_t *);
#define LIBVO_EXTERN(x) vo_functions_t video_out_##x =\
{\
+ preinit,\
init,\
query_format,\
get_info,\
@@ -42,6 +45,7 @@ static uint32_t query_format(uint32_t format);
flip_page,\
check_events,\
uninit,\
+ query_vaa\
};
#include "osd.h"
diff --git a/libvo/vo_3dfx.c b/libvo/vo_3dfx.c
index 3a74510b64..541e716f80 100644
--- a/libvo/vo_3dfx.c
+++ b/libvo/vo_3dfx.c
@@ -488,4 +488,13 @@ static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_aa.c b/libvo/vo_aa.c
index c385664727..61c773457f 100644
--- a/libvo/vo_aa.c
+++ b/libvo/vo_aa.c
@@ -752,3 +752,12 @@ vo_aa_revertoption(config_t* opt,char* param) {
aaopt_subcolor= AA_SPECIAL;
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_dga.c b/libvo/vo_dga.c
index 4de95ffc1d..cec4d0e327 100644
--- a/libvo/vo_dga.c
+++ b/libvo/vo_dga.c
@@ -23,8 +23,8 @@
* - works only on x86 architectures
*
* $Log$
- * Revision 1.36 2002/01/08 20:58:53 atmos4
- * SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
+ * Revision 1.37 2002/01/26 16:01:26 nick
+ * Extensions for video accelerated architecture
*
* Revision 1.35 2001/12/28 20:52:54 alex
* use XF86VidMode later in init (at line 1031) only if we've got support (if have_vm==1)
@@ -1175,6 +1175,16 @@ static uint32_t init( uint32_t width, uint32_t height,
return 0;
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
+
//---------------------------------------------------------
// deleted the old vo_dga_query_event() routine 'cause it is obsolete
diff --git a/libvo/vo_directfb.c b/libvo/vo_directfb.c
index 6e495c41bd..be605c8bb4 100644
--- a/libvo/vo_directfb.c
+++ b/libvo/vo_directfb.c
@@ -888,3 +888,12 @@ static void uninit(void)
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_dxr3.c b/libvo/vo_dxr3.c
index ba812006b4..d9a338cc40 100644
--- a/libvo/vo_dxr3.c
+++ b/libvo/vo_dxr3.c
@@ -551,3 +551,13 @@ static void uninit(void)
static void check_events(void)
{
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_fbdev.c b/libvo/vo_fbdev.c
index d34ee73da1..ad798fc146 100644
--- a/libvo/vo_fbdev.c
+++ b/libvo/vo_fbdev.c
@@ -1338,3 +1338,12 @@ static void uninit(void)
#endif
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_fsdga.c b/libvo/vo_fsdga.c
index ea78e7a656..c1ab3ffdfe 100644
--- a/libvo/vo_fsdga.c
+++ b/libvo/vo_fsdga.c
@@ -463,8 +463,12 @@ int vo_dga_query_event(void){
}
#endif
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
-
-
-
-
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_ggi.c b/libvo/vo_ggi.c
index 382cff14e5..9fc475c476 100644
--- a/libvo/vo_ggi.c
+++ b/libvo/vo_ggi.c
@@ -765,3 +765,13 @@ static void check_events(void)
}
return;
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index b19779a93b..502e8b8a98 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -477,3 +477,13 @@ uninit(void)
saver_on(mDisplay); // screen saver back on
XDestroyWindow( mDisplay,mywindow );
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_gl2.c b/libvo/vo_gl2.c
index 424d20bc1d..2f76022065 100644
--- a/libvo/vo_gl2.c
+++ b/libvo/vo_gl2.c
@@ -1103,3 +1103,13 @@ uninit(void)
saver_on(mDisplay); // screen saver back on
XDestroyWindow( mDisplay,mywindow );
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_md5.c b/libvo/vo_md5.c
index cc904c051d..42346d9043 100644
--- a/libvo/vo_md5.c
+++ b/libvo/vo_md5.c
@@ -103,4 +103,12 @@ static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_mga.c b/libvo/vo_mga.c
index a278ae7c08..8d0fa440ab 100644
--- a/libvo/vo_mga.c
+++ b/libvo/vo_mga.c
@@ -146,5 +146,12 @@ static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
-
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_mpegpes.c b/libvo/vo_mpegpes.c
index 8e480c54f4..f1e52bee1e 100644
--- a/libvo/vo_mpegpes.c
+++ b/libvo/vo_mpegpes.c
@@ -511,3 +511,12 @@ static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_null.c b/libvo/vo_null.c
index b1d2e9a522..ca4fdb1b57 100644
--- a/libvo/vo_null.c
+++ b/libvo/vo_null.c
@@ -90,5 +90,12 @@ static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
-
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_odivx.c b/libvo/vo_odivx.c
index 8e2201e939..73d8023596 100644
--- a/libvo/vo_odivx.c
+++ b/libvo/vo_odivx.c
@@ -261,10 +261,16 @@ uninit(void)
{
}
-
-
static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_pgm.c b/libvo/vo_pgm.c
index 20caa410ee..11640a9e2f 100644
--- a/libvo/vo_pgm.c
+++ b/libvo/vo_pgm.c
@@ -135,5 +135,12 @@ static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
-
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_png.c b/libvo/vo_png.c
index 321475885e..117b3705b1 100644
--- a/libvo/vo_png.c
+++ b/libvo/vo_png.c
@@ -309,3 +309,13 @@ uninit(void)
static void check_events(void)
{
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_sdl.c b/libvo/vo_sdl.c
index 1e108c34dd..d389bbed43 100644
--- a/libvo/vo_sdl.c
+++ b/libvo/vo_sdl.c
@@ -1263,3 +1263,13 @@ uninit(void)
#endif
sdl_close();
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_svga.c b/libvo/vo_svga.c
index 8677b0e088..ec70d1481a 100644
--- a/libvo/vo_svga.c
+++ b/libvo/vo_svga.c
@@ -569,3 +569,13 @@ static void uninit(void) {
free(list);
}
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_syncfb.c b/libvo/vo_syncfb.c
index d4f209de66..ffb8c066e7 100644
--- a/libvo/vo_syncfb.c
+++ b/libvo/vo_syncfb.c
@@ -448,3 +448,12 @@ static void check_events(void)
{
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_tdfxfb.c b/libvo/vo_tdfxfb.c
index aa0ea4111f..d14e0cc6d5 100644
--- a/libvo/vo_tdfxfb.c
+++ b/libvo/vo_tdfxfb.c
@@ -823,4 +823,12 @@ static void my_draw_alpha_accel(int x0, int y0, int w, int h, unsigned char *src
}
#endif /* ! HWACCEL_OSD_M2 */
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_vesa.c b/libvo/vo_vesa.c
index 33a71afe25..0e42febb39 100644
--- a/libvo/vo_vesa.c
+++ b/libvo/vo_vesa.c
@@ -988,3 +988,13 @@ static void check_events(void)
printf("vo_vesa: check_events was called\n");
/* Nothing to do */
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_x11.c b/libvo/vo_x11.c
index 5048321283..d424f19c3d 100644
--- a/libvo/vo_x11.c
+++ b/libvo/vo_x11.c
@@ -614,5 +614,12 @@ uninit(void)
printf("vo: uninit!\n");
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
-
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_xmga.c b/libvo/vo_xmga.c
index 78529832c4..ab3c82018d 100644
--- a/libvo/vo_xmga.c
+++ b/libvo/vo_xmga.c
@@ -391,3 +391,13 @@ uninit(void)
mga_uninit();
printf("vo: uninit!\n");
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c
index 60a0cd2889..0714cf2186 100644
--- a/libvo/vo_xv.c
+++ b/libvo/vo_xv.c
@@ -611,5 +611,12 @@ static void uninit(void)
for( i=0;i<num_buffers;i++ ) deallocate_xvimage( i );
}
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
-
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_xvidix.c b/libvo/vo_xvidix.c
index 3dd405b7a9..119aef75e4 100644
--- a/libvo/vo_xvidix.c
+++ b/libvo/vo_xvidix.c
@@ -490,3 +490,13 @@ static void Terminate_Display_Process(void)
return;
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vo_zr.c b/libvo/vo_zr.c
index b115602d4e..40809a011f 100644
--- a/libvo/vo_zr.c
+++ b/libvo/vo_zr.c
@@ -604,3 +604,13 @@ void vo_zr_revertoption(config_t* opt,char* param) {
norm = VIDEO_MODE_AUTO;
}
+
+static uint32_t preinit(const char *arg)
+{
+ return 0;
+}
+
+static void query_vaa(vo_vaa_t *vaa)
+{
+ memset(vaa,0,sizeof(vo_vaa_t));
+}
diff --git a/libvo/vosub_vidix.h b/libvo/vosub_vidix.h
index 3b39ccb715..7a68bcfe0c 100644
--- a/libvo/vosub_vidix.h
+++ b/libvo/vosub_vidix.h
@@ -13,8 +13,7 @@
#define __VOSUB_VIDIX_INCLUDED
/* drvname can be NULL */
-int vidix_preinit(
-const char *drvname,void *server);
+int vidix_preinit(const char *drvname,void *server);
int vidix_init(unsigned src_width,unsigned src_height,
unsigned dest_x,unsigned dest_y,unsigned dst_width,
unsigned dst_height,unsigned format,unsigned dest_bpp,