mirror of https://github.com/mpv-player/mpv
New logic of HW equalizing:
1) Check HW capability. 2) If HW equalizer is capable control value then use it. In this case value of control is in range -100 : +100 (10x) 3) If not then try use SW equalizing (currently only divxds). Use old range (0 : +100) for that. Well, you shouldn't watch OSD bar if neighter HW nor SW equalizers are not capable control value. TODO: find out keys (maybe Rr Bb Gg) or 'on screen menu' for RGB intensity and OEM effects (fx). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4396 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
fe6143b592
commit
92c5c27464
62
dec_video.c
62
dec_video.c
|
@ -39,11 +39,6 @@ extern int verbose; // defined in mplayer.c
|
||||||
extern double video_time_usage;
|
extern double video_time_usage;
|
||||||
extern double vout_time_usage;
|
extern double vout_time_usage;
|
||||||
extern vo_vaa_t vo_vaa;
|
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];
|
extern int frameratecode2framerate[16];
|
||||||
|
|
||||||
|
@ -281,22 +276,55 @@ void set_video_quality(sh_video_t *sh_video,int quality){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int set_video_colors(sh_video_t *sh_video,char *item,int value){
|
int set_video_colors(sh_video_t *sh_video,char *item,int value)
|
||||||
if(v_hw_equ_cap != 0)
|
{
|
||||||
|
if(vo_vaa.get_video_eq)
|
||||||
{
|
{
|
||||||
if(vo_vaa.set_video_eq)
|
vidix_video_eq_t veq;
|
||||||
|
if(vo_vaa.get_video_eq(&veq) == 0)
|
||||||
{
|
{
|
||||||
vidix_video_eq_t veq;
|
int v_hw_equ_cap = veq.cap;
|
||||||
veq.cap = VEQ_CAP_BRIGHTNESS | VEQ_CAP_CONTRAST | VEQ_CAP_SATURATION | VEQ_CAP_HUE;
|
if(v_hw_equ_cap != 0)
|
||||||
veq.brightness = v_bright*10;
|
{
|
||||||
veq.contrast = v_cont*10;
|
if(vo_vaa.set_video_eq)
|
||||||
veq.saturation = v_saturation*10;
|
{
|
||||||
veq.hue = v_hue;
|
vidix_video_eq_t veq;
|
||||||
veq.flags = VEQ_FLG_ITU_R_BT_601; /* Fixme please !!! */
|
veq.flags = VEQ_FLG_ITU_R_BT_601; /* Fixme please !!! */
|
||||||
vo_vaa.set_video_eq(&veq);
|
if(strcmp(item,"Brightness") == 0)
|
||||||
|
{
|
||||||
|
if(!(v_hw_equ_cap & VEQ_CAP_BRIGHTNESS)) goto try_sw_control;
|
||||||
|
veq.brightness = value*10;
|
||||||
|
veq.cap = VEQ_CAP_BRIGHTNESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(strcmp(item,"Contrast") == 0)
|
||||||
|
{
|
||||||
|
if(!(v_hw_equ_cap & VEQ_CAP_CONTRAST)) goto try_sw_control;
|
||||||
|
veq.contrast = value*10;
|
||||||
|
veq.cap = VEQ_CAP_CONTRAST;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(strcmp(item,"Saturation") == 0)
|
||||||
|
{
|
||||||
|
if(!(v_hw_equ_cap & VEQ_CAP_SATURATION)) goto try_sw_control;
|
||||||
|
veq.saturation = value*10;
|
||||||
|
veq.cap = VEQ_CAP_SATURATION;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(strcmp(item,"Hue") == 0)
|
||||||
|
{
|
||||||
|
if(!(v_hw_equ_cap & VEQ_CAP_HUE)) goto try_sw_control;
|
||||||
|
veq.hue = value*10;
|
||||||
|
veq.cap = VEQ_CAP_HUE;
|
||||||
|
}
|
||||||
|
else goto try_sw_control;;
|
||||||
|
vo_vaa.set_video_eq(&veq);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
try_sw_control:
|
||||||
#ifdef USE_DIRECTSHOW
|
#ifdef USE_DIRECTSHOW
|
||||||
if(sh_video->codec->driver==VFM_DSHOW){
|
if(sh_video->codec->driver==VFM_DSHOW){
|
||||||
DS_VideoDecoder_SetValue(ds_vdec,item,value);
|
DS_VideoDecoder_SetValue(ds_vdec,item,value);
|
||||||
|
|
|
@ -88,11 +88,6 @@ int lavc_param_keyint = -1;
|
||||||
Video accelerated architecture
|
Video accelerated architecture
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
vo_vaa_t vo_vaa;
|
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;
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------
|
//--------------------------
|
||||||
|
|
26
mplayer.c
26
mplayer.c
|
@ -114,11 +114,6 @@ m_config_t* mconfig;
|
||||||
Video accelerated architecture
|
Video accelerated architecture
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
vo_vaa_t vo_vaa;
|
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
|
// Config file
|
||||||
|
@ -446,6 +441,11 @@ int osd_last_pts=-303;
|
||||||
int osd_show_av_delay = 0;
|
int osd_show_av_delay = 0;
|
||||||
int osd_show_sub_delay = 0;
|
int osd_show_sub_delay = 0;
|
||||||
|
|
||||||
|
int v_hw_equ_cap=0;
|
||||||
|
int v_bright=50;
|
||||||
|
int v_cont=50;
|
||||||
|
int v_hue=50;
|
||||||
|
int v_saturation=50;
|
||||||
/*
|
/*
|
||||||
For future:
|
For future:
|
||||||
int v_red_intensity=0;
|
int v_red_intensity=0;
|
||||||
|
@ -1327,10 +1327,10 @@ current_module="init_libvo";
|
||||||
if(vo_vaa.get_video_eq(&veq) == 0)
|
if(vo_vaa.get_video_eq(&veq) == 0)
|
||||||
{
|
{
|
||||||
v_hw_equ_cap = veq.cap;
|
v_hw_equ_cap = veq.cap;
|
||||||
v_bright = veq.brightness/10;
|
if(veq.cap & VEQ_CAP_BRIGHTNESS) v_bright = veq.brightness/10;
|
||||||
v_cont = veq.contrast/10;
|
if(veq.cap & VEQ_CAP_CONTRAST) v_cont = veq.contrast/10;
|
||||||
v_hue = veq.hue/10;
|
if(veq.cap & VEQ_CAP_HUE) v_hue = veq.hue/10;
|
||||||
v_saturation=veq.saturation/10;
|
if(veq.cap & VEQ_CAP_SATURATION) v_saturation=veq.saturation/10;
|
||||||
/*
|
/*
|
||||||
v_red_intensity=veq.red_intensity/10;
|
v_red_intensity=veq.red_intensity/10;
|
||||||
v_green_intensity=veq.green_intensity/10;
|
v_green_intensity=veq.green_intensity/10;
|
||||||
|
@ -2097,7 +2097,7 @@ if(step_sec>0) {
|
||||||
if ( ++v_cont > 100 ) v_cont = 100;
|
if ( ++v_cont > 100 ) v_cont = 100;
|
||||||
} else {
|
} else {
|
||||||
--v_cont;
|
--v_cont;
|
||||||
if(v_hw_equ_cap)
|
if(v_hw_equ_cap & VEQ_CAP_CONTRAST)
|
||||||
{
|
{
|
||||||
if(v_cont < -100) v_cont = -100;
|
if(v_cont < -100) v_cont = -100;
|
||||||
}
|
}
|
||||||
|
@ -2125,7 +2125,7 @@ if(step_sec>0) {
|
||||||
if ( ++v_bright > 100 ) v_bright = 100;
|
if ( ++v_bright > 100 ) v_bright = 100;
|
||||||
} else {
|
} else {
|
||||||
--v_bright;
|
--v_bright;
|
||||||
if(v_hw_equ_cap)
|
if(v_hw_equ_cap & VEQ_CAP_BRIGHTNESS)
|
||||||
{
|
{
|
||||||
if(v_bright < -100) v_bright = -100;
|
if(v_bright < -100) v_bright = -100;
|
||||||
}
|
}
|
||||||
|
@ -2153,7 +2153,7 @@ if(step_sec>0) {
|
||||||
if ( ++v_hue > 100 ) v_hue = 100;
|
if ( ++v_hue > 100 ) v_hue = 100;
|
||||||
} else {
|
} else {
|
||||||
--v_hue;
|
--v_hue;
|
||||||
if(v_hw_equ_cap)
|
if(v_hw_equ_cap & VEQ_CAP_HUE)
|
||||||
{
|
{
|
||||||
if(v_hue < -100) v_hue = -100;
|
if(v_hue < -100) v_hue = -100;
|
||||||
}
|
}
|
||||||
|
@ -2181,7 +2181,7 @@ if(step_sec>0) {
|
||||||
if ( ++v_saturation > 100 ) v_saturation = 100;
|
if ( ++v_saturation > 100 ) v_saturation = 100;
|
||||||
} else {
|
} else {
|
||||||
--v_saturation;
|
--v_saturation;
|
||||||
if(v_hw_equ_cap)
|
if(v_hw_equ_cap & VEQ_CAP_SATURATION)
|
||||||
{
|
{
|
||||||
if(v_saturation < -100) v_saturation = -100;
|
if(v_saturation < -100) v_saturation = -100;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue