changeset 1429:8986d06b2816

contrast/brightness/etc patch (temporary)
author arpi
date Wed, 01 Aug 2001 01:02:33 +0000
parents a90d889eb649
children 1728d249c783
files dec_video.c mplayer.c
diffstat 2 files changed, 139 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/dec_video.c	Tue Jul 31 23:18:16 2001 +0000
+++ b/dec_video.c	Wed Aug 01 01:02:33 2001 +0000
@@ -84,6 +84,58 @@
 }
 #endif
 
+int get_video_quality_max(sh_video_t *sh_video){
+ switch(sh_video->codec->driver){
+#ifdef USE_DIRECTSHOW
+  case VFM_DSHOW:
+      return 4;
+#endif
+#ifdef MPEG12_POSTPROC
+  case VFM_MPEG:
+#endif
+  case VFM_DIVX4:
+  case VFM_ODIVX:
+      return 6;
+ }
+ return 0;
+}
+
+void set_video_quality(sh_video_t *sh_video,int quality){
+ switch(sh_video->codec->driver){
+#ifdef ARCH_X86
+#ifdef USE_DIRECTSHOW
+  case VFM_DSHOW: {
+   if(quality<0 || quality>4) quality=4;
+   DS_SetValue_DivX("Quality",quality);
+  }
+  break;
+#endif
+#endif
+#ifdef MPEG12_POSTPROC
+  case VFM_MPEG: {
+   if(quality<0 || quality>6) quality=6;
+   picture->pp_options=(1<<quality)-1;
+  }
+  break;
+#endif
+  case VFM_DIVX4:
+  case VFM_ODIVX: {
+   DEC_SET dec_set;
+   if(quality<0 || quality>6) quality=6;
+   dec_set.postproc_level=(1<<quality)-1;
+   decore(0x123,DEC_OPT_SETPP,&dec_set,NULL);
+  }
+  break;
+ }
+}
+
+int set_video_colors(sh_video_t *sh_video,char *item,int value){
+    if(!strcmp(sh_video->codec->name,"divxds")){
+	DS_SetValue_DivX(item,value);
+	return 1;
+    }
+    return 0;
+}
 
 int init_video(sh_video_t *sh_video){
 unsigned int out_fmt=sh_video->codec->outfmt[sh_video->outfmtidx];
--- a/mplayer.c	Tue Jul 31 23:18:16 2001 +0000
+++ b/mplayer.c	Wed Aug 01 01:02:33 2001 +0000
@@ -173,6 +173,10 @@
 demuxer_t* demux_open(stream_t *stream,int file_format);
 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
 
+int get_video_quality_max(sh_video_t *sh_video);
+void set_video_quality(sh_video_t *sh_video,int quality);
+int set_video_colors(sh_video_t *sh_video,char *item,int value);
+
 // MPEG video stream parser:
 #include "parse_es.h"
 
@@ -227,6 +231,7 @@
 // options:
 int osd_level=2;
 int divx_quality=0;
+int auto_quality=-1;
 char *seek_to_sec=NULL;
 off_t seek_to_byte=0;
 int has_audio=1;
@@ -461,6 +466,11 @@
 int osd_function=OSD_PLAY;
 int osd_last_pts=-303;
 
+int v_bright=50;
+int v_cont=50;
+int v_hue=50;
+int v_saturation=50;
+
 //float a_frame=0;    // Audio
 
 float rel_seek_secs=0;
@@ -1565,6 +1575,83 @@
     case 'm':
       mixer_usemaster=!mixer_usemaster;
       break;
+
+    // Contrast:
+    case '1':
+    case '2':
+        if(c=='2'){
+	    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
+    		if(osd_level){
+            	    osd_visible=sh_video->fps; // 1 sec
+	    	    vo_osd_progbar_type=OSD_CONTRAST;
+            	    vo_osd_progbar_value=(v_cont)*10/4;
+		}
+#endif
+	}
+	break;
+
+    // Brightness:
+    case '3':
+    case '4':
+        if(c=='4'){
+	    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
+    		if(osd_level){
+            	    osd_visible=sh_video->fps; // 1 sec
+	    	    vo_osd_progbar_type=OSD_BRIGHTNESS;
+            	    vo_osd_progbar_value=(v_bright)*10/4;
+		}
+#endif
+	}
+	break;
+
+    // Hue:
+    case '5':
+    case '6':
+        if(c=='6'){
+	    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
+    		if(osd_level){
+            	    osd_visible=sh_video->fps; // 1 sec
+	    	    vo_osd_progbar_type=OSD_HUE;
+            	    vo_osd_progbar_value=(v_hue)*10/4;
+		}
+#endif
+	}
+	break;
+
+    // Saturation:
+    case '7':
+    case '8':
+        if(c=='8'){
+	    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
+    		if(osd_level){
+            	    osd_visible=sh_video->fps; // 1 sec
+	    	    vo_osd_progbar_type=OSD_SATURATION;
+            	    vo_osd_progbar_value=(v_saturation)*10/4;
+		}
+#endif
+	}
+	break;
+
     case 'd':
       frame_dropping=(frame_dropping+1)%3;
       printf("== drop: %d ==  \n",frame_dropping);