mirror of
https://github.com/mpv-player/mpv
synced 2025-01-20 22:40:52 +00:00
contrast/brightness/etc patch (temporary)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1430 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
9e3123d6a3
commit
8ff727d831
52
dec_video.c
52
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];
|
||||
|
87
mplayer.c
87
mplayer.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user