changeset 4006:f473505a2744

preliminary config interface dual syncengine
author mswitch
date Sun, 06 Jan 2002 15:15:17 +0000
parents 7c07bc1e0a81
children 4bf012cfd6ef
files libvo/vo_dxr3.c
diffstat 1 files changed, 27 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/vo_dxr3.c	Sun Jan 06 14:29:58 2002 +0000
+++ b/libvo/vo_dxr3.c	Sun Jan 06 15:15:17 2002 +0000
@@ -56,6 +56,10 @@
 static int fd_spu = -1;
 static int ioval = 0;
 
+struct {
+    int se_version;
+} conf_s;
+
 static vo_info_t vo_info = 
 {
 	"DXR3/H+ video out",
@@ -68,16 +72,25 @@
 void write_dxr3( rte_context* context, void* data, size_t size, void* user_data )
 {
     size_t data_left = size;
-    if(ioctl(fd_video,EM8300_IOCTL_VIDEO_SETPTS,&vo_pts) < 0)
+    if(!conf_s.se_version) if(ioctl(fd_video,EM8300_IOCTL_VIDEO_SETPTS,&vo_pts) < 0)
 	    printf( "VO: [dxr3] Unable to set pts\n" );
     while( data_left )
 	data_left -= write( fd_video, (void*) data+(size-data_left), data_left );
 }
 #endif
 
+void parseconfig( )
+{
+    conf_s.se_version = 0;
+    if(vo_subdevice == NULL) return;
+    conf_s.se_version = 1;
+}
+
 static uint32_t init(uint32_t scr_width, uint32_t scr_height, uint32_t width, uint32_t height, uint32_t fullscreen, char *title, uint32_t format)
 {
     int tmp1,tmp2;
+    
+    parseconfig();
     fd_control = open( "/dev/em8300", O_WRONLY );
     if( fd_control < 1 )
     {
@@ -97,6 +110,11 @@
 	printf( "VO: [dxr3] Error opening /dev/em8300_sp for writing!\n" );
 	return -1;
     }
+    
+    if(!conf_s.se_version)
+	printf( "VO: [dxr3] Using hardware sync\n" );
+    else
+	printf( "VO: [dxr3] Using software sync\n" );
 
     /* Subpic code isn't working yet, don't set to ON 
        unless you are really sure what you are doing */
@@ -289,7 +307,7 @@
 	vo_mpegpes_t *p=(vo_mpegpes_t *)src[0];
         size_t data_left = p->size;
 
-	if(ioctl(fd_video,EM8300_IOCTL_VIDEO_SETPTS,&vo_pts) < 0)
+	if(!conf_s.se_version) if(ioctl(fd_video,EM8300_IOCTL_VIDEO_SETPTS,&vo_pts) < 0)
 	    printf( "VO: [dxr3] Unable to set pts\n" );
 
 	while( data_left )
@@ -398,16 +416,18 @@
 static uint32_t
 query_format(uint32_t format)
 {
-    if(format==IMGFMT_MPEGPES) return 0x2|0x4|256;
+    uint32_t flag = 0;
+    if(format==IMGFMT_MPEGPES) flag = 0x2|0x4;
 #ifdef USE_MP1E
-    if(format==IMGFMT_YV12) return 0x1|0x4|256;
-    if(format==IMGFMT_YUY2) return 0x1|0x4|256;
-    if(format==IMGFMT_BGR24) return 0x1|0x4|256;
+    if(format==IMGFMT_YV12) flag = 0x1|0x4;
+    if(format==IMGFMT_YUY2) flag = 0x1|0x4;
+    if(format==IMGFMT_BGR24) flag = 0x1|0x4;
     else printf( "VO: [dxr3] Format unsupported, mail dholm@iname.com\n" );
 #else
     else printf( "VO: [dxr3] You have disabled libmp1e support, you won't be able to play this format!\n" );
 #endif
-    return 0;
+    if(!conf_s.se_version && flag) flag |= 256;
+    return flag;
 }
 
 static void uninit(void)