diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-08-01 01:02:33 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-08-01 01:02:33 +0000 |
commit | 8ff727d83157f7aa043200b86a982a0972284eeb (patch) | |
tree | f18a1546399561a2f2e227a0c4a7ca3a152515b8 | |
parent | 9e3123d6a3f686998c6e83ceec33760efaa1e56f (diff) |
contrast/brightness/etc patch (temporary)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1430 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | dec_video.c | 52 | ||||
-rw-r--r-- | mplayer.c | 87 |
2 files changed, 139 insertions, 0 deletions
diff --git a/dec_video.c b/dec_video.c index 8724c1a0aa..b6474e49ed 100644 --- a/dec_video.c +++ b/dec_video.c @@ -84,6 +84,58 @@ void convert_linux(unsigned char *puc_y, int stride_y, } #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]; @@ -173,6 +173,10 @@ int read_asf_header(demuxer_t *demuxer); 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 @@ extern void avi_fixate(); // 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_visible=100; 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 @@ if(1) 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); |