changeset 4388:b6b429d10296

Support for HW equalizing
author nick
date Sun, 27 Jan 2002 18:39:53 +0000
parents df705351885a
children 94f9cef44fdb
files dec_video.c mencoder.c mplayer.c
diffstat 3 files changed, 104 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/dec_video.c	Sun Jan 27 18:29:33 2002 +0000
+++ b/dec_video.c	Sun Jan 27 18:39:53 2002 +0000
@@ -38,6 +38,12 @@
 
 extern double video_time_usage;
 extern double vout_time_usage;
+extern vo_vaa_t vo_vaa;
+extern int v_hw_equ_cap;
+extern int v_bright;
+extern int v_cont;
+extern int v_hue;
+extern int v_saturation;
 
 extern int frameratecode2framerate[16];
 
@@ -89,7 +95,6 @@
 
 #ifdef USE_TV
 #include "libmpdemux/tv.h"
-
 extern int tv_param_on;
 extern tvi_handle_t *tv_handler;
 #endif
@@ -277,6 +282,21 @@
 }
 
 int set_video_colors(sh_video_t *sh_video,char *item,int value){
+    if(v_hw_equ_cap != 0)
+    {
+	if(vo_vaa.set_video_eq)
+	{
+	    vidix_video_eq_t veq;
+	    veq.cap = VEQ_CAP_BRIGHTNESS | VEQ_CAP_CONTRAST | VEQ_CAP_SATURATION | VEQ_CAP_HUE;
+	    veq.brightness = v_bright*10;
+	    veq.contrast = v_cont*10;
+	    veq.saturation = v_saturation*10;
+	    veq.hue = v_hue;
+	    veq.flags = VEQ_FLG_ITU_R_BT_601; /* Fixme please !!! */
+	    vo_vaa.set_video_eq(&veq);
+	}
+	return 1;
+    }
 #ifdef USE_DIRECTSHOW
     if(sh_video->codec->driver==VFM_DSHOW){
 	DS_VideoDecoder_SetValue(ds_vdec,item,value);
--- a/mencoder.c	Sun Jan 27 18:29:33 2002 +0000
+++ b/mencoder.c	Sun Jan 27 18:39:53 2002 +0000
@@ -84,6 +84,17 @@
 
 #include "fastmemcpy.h"
 
+/**************************************************************************
+             Video accelerated architecture
+**************************************************************************/
+vo_vaa_t vo_vaa;
+int v_hw_equ_cap=0;
+int v_bright=50;
+int v_cont=50;
+int v_hue=50;
+int v_saturation=50;
+
+
 //--------------------------
 
 // cache2:
--- a/mplayer.c	Sun Jan 27 18:29:33 2002 +0000
+++ b/mplayer.c	Sun Jan 27 18:39:53 2002 +0000
@@ -114,6 +114,12 @@
              Video accelerated architecture
 **************************************************************************/
 vo_vaa_t vo_vaa;
+int v_hw_equ_cap=0;
+int v_bright=50;
+int v_cont=50;
+int v_hue=50;
+int v_saturation=50;
+
 //**************************************************************************//
 //             Config file
 //**************************************************************************//
@@ -440,10 +446,12 @@
 int osd_show_av_delay = 0;
 int osd_show_sub_delay = 0;
 
-int v_bright=50;
-int v_cont=50;
-int v_hue=50;
-int v_saturation=50;
+/*
+For future:
+int v_red_intensity=0;
+int v_green_intensity=0;
+int v_blue_intensity=0;
+*/
 
 int vo_flags=0;
 
@@ -1310,6 +1318,26 @@
    inited_flags|=INITED_VO;
    mp_msg(MSGT_CPLAYER,MSGL_V,"INFO: Video OUT driver init OK!\n");
    video_out->query_vaa(&vo_vaa);
+   /*
+	get_hw_eq
+   */
+   if(vo_vaa.get_video_eq)
+   {
+	vidix_video_eq_t veq;
+	if(vo_vaa.get_video_eq(&veq) == 0)
+	{
+	    v_hw_equ_cap = veq.cap;
+	    v_bright = veq.brightness/10;
+	    v_cont = veq.contrast/10;
+	    v_hue = veq.hue/10;
+	    v_saturation=veq.saturation/10;
+	    /*
+	    v_red_intensity=veq.red_intensity/10;
+	    v_green_intensity=veq.green_intensity/10;
+	    v_blue_intensity=veq.blue_intensity/10;
+	    */
+	}
+   }
    fflush(stdout);
    
 //================== MAIN: ==========================
@@ -2068,7 +2096,15 @@
         if(c=='2'){
 	    if ( ++v_cont > 100 ) v_cont = 100;
         } else {
-    	    if ( --v_cont < 0 ) v_cont = 0;	    
+	    --v_cont;
+	    if(v_hw_equ_cap)
+	    {
+		if(v_cont < -100) v_cont = -100;
+	    }
+	    else
+	    {
+    		if ( v_cont < 0 ) v_cont = 0;	    
+	    }
         }
 	if(set_video_colors(sh_video,"Contrast",v_cont)){
 #ifdef USE_OSD
@@ -2076,6 +2112,7 @@
             	    osd_visible=sh_video->fps; // 1 sec
 	    	    vo_osd_progbar_type=OSD_CONTRAST;
             	    vo_osd_progbar_value=((v_cont)<<8)/100;
+		    if(v_hw_equ_cap) vo_osd_progbar_value = ((v_cont+100)<<8)/200;
 		}
 #endif
 	}
@@ -2087,7 +2124,15 @@
         if(c=='4'){
 	    if ( ++v_bright > 100 ) v_bright = 100;
         } else {
-    	    if ( --v_bright < 0 ) v_bright = 0;	    
+	    --v_bright;
+	    if(v_hw_equ_cap)
+	    {
+		if(v_bright < -100) v_bright = -100;
+	    }
+	    else
+	    {
+    		if ( v_bright < 0 ) v_bright = 0;	    
+	    }
         }
 	if(set_video_colors(sh_video,"Brightness",v_bright)){
 #ifdef USE_OSD
@@ -2095,6 +2140,7 @@
             	    osd_visible=sh_video->fps; // 1 sec
 	    	    vo_osd_progbar_type=OSD_BRIGHTNESS;
             	    vo_osd_progbar_value=((v_bright)<<8)/100;
+		    if(v_hw_equ_cap) vo_osd_progbar_value = ((v_bright+100)<<8)/200;
 		}
 #endif
 	}
@@ -2106,7 +2152,15 @@
         if(c=='6'){
 	    if ( ++v_hue > 100 ) v_hue = 100;
         } else {
-    	    if ( --v_hue < 0 ) v_hue = 0;	    
+	    --v_hue;
+	    if(v_hw_equ_cap)
+	    {
+		if(v_hue < -100) v_hue = -100;
+	    }
+	    else
+	    {
+    		if ( v_hue < 0 ) v_hue = 0;	    
+	    }
         }
 	if(set_video_colors(sh_video,"Hue",v_hue)){
 #ifdef USE_OSD
@@ -2114,6 +2168,7 @@
             	    osd_visible=sh_video->fps; // 1 sec
 	    	    vo_osd_progbar_type=OSD_HUE;
             	    vo_osd_progbar_value=((v_hue)<<8)/100;
+		    if(v_hw_equ_cap) vo_osd_progbar_value = ((v_hue+100)<<8)/200;
 		}
 #endif
 	}
@@ -2125,7 +2180,15 @@
         if(c=='8'){
 	    if ( ++v_saturation > 100 ) v_saturation = 100;
         } else {
-    	    if ( --v_saturation < 0 ) v_saturation = 0;	    
+	    --v_saturation;
+	    if(v_hw_equ_cap)
+	    {
+		if(v_saturation < -100) v_saturation = -100;
+	    }
+	    else
+	    {
+    		if ( v_saturation < 0 ) v_saturation = 0;	    
+	    }
         }
 	if(set_video_colors(sh_video,"Saturation",v_saturation)){
 #ifdef USE_OSD
@@ -2133,6 +2196,7 @@
             	    osd_visible=sh_video->fps; // 1 sec
 	    	    vo_osd_progbar_type=OSD_SATURATION;
             	    vo_osd_progbar_value=((v_saturation)<<8)/100;
+		    if(v_hw_equ_cap) vo_osd_progbar_value = ((v_saturation+100)<<8)/200;
 		}
 #endif
 	}