Mercurial > mplayer.hg
comparison mplayer.c @ 6755:a31b9f15cbff
- fix audio equalizer
- rewrite video equalizer handling (i teszted with mga g400 [x]mga,xv,xvidix and radeon xv,xvidix )
- fix some small gtk bug
- i dunno, i don't remember ... :)
author | pontscho |
---|---|
date | Fri, 19 Jul 2002 20:51:48 +0000 |
parents | cc917a581b6e |
children | 924263b4df10 |
comparison
equal
deleted
inserted
replaced
6754:c925dd9372f1 | 6755:a31b9f15cbff |
---|---|
149 // Common FIFO functions, and keyboard/event FIFO code | 149 // Common FIFO functions, and keyboard/event FIFO code |
150 #include "fifo.c" | 150 #include "fifo.c" |
151 int use_stdin=0; | 151 int use_stdin=0; |
152 //**************************************************************************// | 152 //**************************************************************************// |
153 | 153 |
154 static vo_functions_t *video_out=NULL; | 154 vo_functions_t *video_out=NULL; |
155 ao_functions_t *audio_out=NULL; | 155 ao_functions_t *audio_out=NULL; |
156 | 156 |
157 // benchmark: | 157 // benchmark: |
158 double video_time_usage=0; | 158 double video_time_usage=0; |
159 double vout_time_usage=0; | 159 double vout_time_usage=0; |
266 extern char *ao_subdevice; | 266 extern char *ao_subdevice; |
267 | 267 |
268 static stream_t* stream=NULL; | 268 static stream_t* stream=NULL; |
269 | 269 |
270 char* current_module=NULL; // for debugging | 270 char* current_module=NULL; // for debugging |
271 | |
272 int v_hw_equ_cap=0; | |
273 /* | |
274 For future: | |
275 int v_red_intensity=0; | |
276 int v_green_intensity=0; | |
277 int v_blue_intensity=0; | |
278 */ | |
279 | |
280 void set_video_eq( int cap ) | |
281 { | |
282 mp_cmd_t * mp_cmd; | |
283 | |
284 v_hw_equ_cap=cap; | |
285 | |
286 mp_cmd = (mp_cmd_t *)calloc( 1,sizeof( *mp_cmd ) ); | |
287 mp_cmd->id=MP_CMD_CONTRAST; mp_cmd->name=strdup( "contrast" ); | |
288 mp_cmd->args[0].v.i=vo_gamma_contrast; mp_cmd->args[1].v.i=1; mp_input_queue_cmd( mp_cmd ); | |
289 | |
290 mp_cmd = (mp_cmd_t *)calloc( 1,sizeof( *mp_cmd ) ); | |
291 mp_cmd->id=MP_CMD_BRIGHTNESS; mp_cmd->name=strdup( "brightness" ); | |
292 mp_cmd->args[0].v.i=vo_gamma_brightness; mp_cmd->args[1].v.i=1; mp_input_queue_cmd( mp_cmd ); | |
293 | |
294 mp_cmd = (mp_cmd_t *)calloc( 1,sizeof( *mp_cmd ) ); | |
295 mp_cmd->id=MP_CMD_HUE; mp_cmd->name=strdup( "hue" ); | |
296 mp_cmd->args[0].v.i=vo_gamma_hue; mp_cmd->args[1].v.i=1; mp_input_queue_cmd( mp_cmd ); | |
297 | |
298 mp_cmd = (mp_cmd_t *)calloc( 1,sizeof( *mp_cmd ) ); | |
299 mp_cmd->id=MP_CMD_SATURATION; mp_cmd->name=strdup( "saturation" ); | |
300 mp_cmd->args[0].v.i=vo_gamma_saturation; mp_cmd->args[1].v.i=1; mp_input_queue_cmd( mp_cmd ); | |
301 } | |
302 // --- | |
271 | 303 |
272 #ifdef HAVE_RTC | 304 #ifdef HAVE_RTC |
273 int nortc; | 305 int nortc; |
274 #endif | 306 #endif |
275 | 307 |
488 static demux_stream_t *d_dvdsub=NULL; | 520 static demux_stream_t *d_dvdsub=NULL; |
489 | 521 |
490 static sh_audio_t *sh_audio=NULL; | 522 static sh_audio_t *sh_audio=NULL; |
491 static sh_video_t *sh_video=NULL; | 523 static sh_video_t *sh_video=NULL; |
492 | 524 |
525 | |
493 // for multifile support: | 526 // for multifile support: |
494 play_tree_iter_t* playtree_iter = NULL; | 527 play_tree_iter_t* playtree_iter = NULL; |
495 | 528 |
496 int file_format=DEMUXER_TYPE_UNKNOWN; | 529 int file_format=DEMUXER_TYPE_UNKNOWN; |
497 | 530 |
504 | 537 |
505 int osd_function=OSD_PLAY; | 538 int osd_function=OSD_PLAY; |
506 int osd_last_pts=-303; | 539 int osd_last_pts=-303; |
507 int osd_show_av_delay = 0; | 540 int osd_show_av_delay = 0; |
508 int osd_show_sub_delay = 0; | 541 int osd_show_sub_delay = 0; |
509 | |
510 int v_hw_equ_cap=0; | |
511 int v_bright=50; | |
512 int v_cont=50; | |
513 int v_hue=50; | |
514 int v_saturation=50; | |
515 /* | |
516 For future: | |
517 int v_red_intensity=0; | |
518 int v_green_intensity=0; | |
519 int v_blue_intensity=0; | |
520 */ | |
521 | 542 |
522 int rtc_fd=-1; | 543 int rtc_fd=-1; |
523 | 544 |
524 //float a_frame=0; // Audio | 545 //float a_frame=0; // Audio |
525 | 546 |
1341 get_hw_eq | 1362 get_hw_eq |
1342 */ | 1363 */ |
1343 if(vo_vaa.get_video_eq) | 1364 if(vo_vaa.get_video_eq) |
1344 { | 1365 { |
1345 vidix_video_eq_t veq; | 1366 vidix_video_eq_t veq; |
1346 if(vo_vaa.get_video_eq(&veq) == 0) | 1367 if( vo_vaa.get_video_eq(&veq) == 0) |
1347 { | 1368 { |
1348 v_hw_equ_cap = veq.cap; | 1369 v_hw_equ_cap = veq.cap; |
1349 if(veq.cap & VEQ_CAP_BRIGHTNESS) v_bright = veq.brightness/10; | 1370 if ( ( vo_gamma_brightness == -101 )&&( veq.cap & VEQ_CAP_BRIGHTNESS ) ) vo_gamma_brightness = veq.brightness / 10; |
1350 if(veq.cap & VEQ_CAP_CONTRAST) v_cont = veq.contrast/10; | 1371 if ( ( vo_gamma_contrast == -101 )&&( veq.cap & VEQ_CAP_CONTRAST ) ) vo_gamma_contrast = veq.contrast / 10; |
1351 if(veq.cap & VEQ_CAP_HUE) v_hue = veq.hue/10; | 1372 if ( ( vo_gamma_hue == -101 )&&( veq.cap & VEQ_CAP_HUE ) ) vo_gamma_hue = veq.hue / 10; |
1352 if(veq.cap & VEQ_CAP_SATURATION) v_saturation=veq.saturation/10; | 1373 if ( ( vo_gamma_saturation == -101 )&&( veq.cap & VEQ_CAP_SATURATION ) ) vo_gamma_saturation=veq.saturation / 10; |
1353 /* | 1374 /* |
1354 v_red_intensity=veq.red_intensity/10; | 1375 v_red_intensity=veq.red_intensity/10; |
1355 v_green_intensity=veq.green_intensity/10; | 1376 v_green_intensity=veq.green_intensity/10; |
1356 v_blue_intensity=veq.blue_intensity/10; | 1377 v_blue_intensity=veq.blue_intensity/10; |
1357 */ | 1378 */ |
1358 } | 1379 } |
1359 } | 1380 } |
1381 | |
1382 if ( vo_gamma_brightness == -101 ) vo_gamma_brightness=0.0f; | |
1383 if ( vo_gamma_contrast == -101 ) vo_gamma_contrast=0.0f; | |
1384 if ( vo_gamma_hue == -101 ) vo_gamma_hue=0.0f; | |
1385 if ( vo_gamma_saturation == -101 ) vo_gamma_saturation=0.0f; | |
1386 | |
1387 set_video_eq( v_hw_equ_cap ); | |
1360 | 1388 |
1361 if(vo_flags & 0x08 && vo_spudec) | 1389 if(vo_flags & 0x08 && vo_spudec) |
1362 spudec_set_hw_spu(vo_spudec,video_out); | 1390 spudec_set_hw_spu(vo_spudec,video_out); |
1363 | 1391 |
1364 //================== MAIN: ========================== | 1392 //================== MAIN: ========================== |
2160 break; | 2188 break; |
2161 // Contrast: | 2189 // Contrast: |
2162 case '1': | 2190 case '1': |
2163 case '2': | 2191 case '2': |
2164 if(c=='2'){ | 2192 if(c=='2'){ |
2165 if ( ++v_cont > 100 ) v_cont = 100; | 2193 if ( ++vo_gamma_contrast > 100 ) vo_gamma_contrast = 100; |
2166 } else { | 2194 } else { |
2167 --v_cont; | 2195 --vo_gamma_contrast; |
2168 if(v_hw_equ_cap & VEQ_CAP_CONTRAST) | 2196 if(v_hw_equ_cap & VEQ_CAP_CONTRAST) |
2169 { | 2197 { |
2170 if(v_cont < -100) v_cont = -100; | 2198 if(vo_gamma_contrast < -100) vo_gamma_contrast = -100; |
2171 } | 2199 } |
2172 else | 2200 else |
2173 { | 2201 { |
2174 if ( v_cont < 0 ) v_cont = 0; | 2202 if ( vo_gamma_contrast < 0 ) vo_gamma_contrast = 0; |
2175 } | 2203 } |
2176 } | 2204 } |
2177 if(set_video_colors(sh_video,"Contrast",v_cont)){ | 2205 if(set_video_colors(sh_video,"Contrast",vo_gamma_contrast)){ |
2178 #ifdef USE_OSD | 2206 #ifdef USE_OSD |
2179 if(osd_level){ | 2207 if(osd_level){ |
2180 osd_visible=sh_video->fps; // 1 sec | 2208 osd_visible=sh_video->fps; // 1 sec |
2181 vo_osd_progbar_type=OSD_CONTRAST; | 2209 vo_osd_progbar_type=OSD_CONTRAST; |
2182 vo_osd_progbar_value=((v_cont)<<8)/100; | 2210 vo_osd_progbar_value=((vo_gamma_contrast)<<8)/100; |
2183 if(v_hw_equ_cap) vo_osd_progbar_value = ((v_cont+100)<<8)/200; | 2211 if(v_hw_equ_cap) vo_osd_progbar_value = ((vo_gamma_contrast+100)<<8)/200; |
2184 vo_osd_changed(OSDTYPE_PROGBAR); | 2212 vo_osd_changed(OSDTYPE_PROGBAR); |
2185 } | 2213 } |
2186 #endif | 2214 #endif |
2187 } | 2215 } |
2188 break; | 2216 break; |
2189 | 2217 |
2190 // Brightness: | 2218 // Brightness: |
2191 case '3': | 2219 case '3': |
2192 case '4': | 2220 case '4': |
2193 if(c=='4'){ | 2221 if(c=='4'){ |
2194 if ( ++v_bright > 100 ) v_bright = 100; | 2222 if ( ++vo_gamma_brightness > 100 ) vo_gamma_brightness = 100; |
2195 } else { | 2223 } else { |
2196 --v_bright; | 2224 --vo_gamma_brightness; |
2197 if(v_hw_equ_cap & VEQ_CAP_BRIGHTNESS) | 2225 if(v_hw_equ_cap & VEQ_CAP_BRIGHTNESS) |
2198 { | 2226 { |
2199 if(v_bright < -100) v_bright = -100; | 2227 if(vo_gamma_brightness < -100) vo_gamma_brightness = -100; |
2200 } | 2228 } |
2201 else | 2229 else |
2202 { | 2230 { |
2203 if ( v_bright < 0 ) v_bright = 0; | 2231 if ( vo_gamma_brightness < 0 ) vo_gamma_brightness = 0; |
2204 } | 2232 } |
2205 } | 2233 } |
2206 if(set_video_colors(sh_video,"Brightness",v_bright)){ | 2234 if(set_video_colors(sh_video,"Brightness",vo_gamma_brightness)){ |
2207 #ifdef USE_OSD | 2235 #ifdef USE_OSD |
2208 if(osd_level){ | 2236 if(osd_level){ |
2209 osd_visible=sh_video->fps; // 1 sec | 2237 osd_visible=sh_video->fps; // 1 sec |
2210 vo_osd_progbar_type=OSD_BRIGHTNESS; | 2238 vo_osd_progbar_type=OSD_BRIGHTNESS; |
2211 vo_osd_progbar_value=((v_bright)<<8)/100; | 2239 vo_osd_progbar_value=((vo_gamma_brightness)<<8)/100; |
2212 if(v_hw_equ_cap) vo_osd_progbar_value = ((v_bright+100)<<8)/200; | 2240 if(v_hw_equ_cap) vo_osd_progbar_value = ((vo_gamma_brightness+100)<<8)/200; |
2213 vo_osd_changed(OSDTYPE_PROGBAR); | 2241 vo_osd_changed(OSDTYPE_PROGBAR); |
2214 } | 2242 } |
2215 #endif | 2243 #endif |
2216 } | 2244 } |
2217 break; | 2245 break; |
2218 | 2246 |
2219 // Hue: | 2247 // Hue: |
2220 case '5': | 2248 case '5': |
2221 case '6': | 2249 case '6': |
2222 if(c=='6'){ | 2250 if(c=='6'){ |
2223 if ( ++v_hue > 100 ) v_hue = 100; | 2251 if ( ++vo_gamma_hue > 100 ) vo_gamma_hue = 100; |
2224 } else { | 2252 } else { |
2225 --v_hue; | 2253 --vo_gamma_hue; |
2226 if(v_hw_equ_cap & VEQ_CAP_HUE) | 2254 if(v_hw_equ_cap & VEQ_CAP_HUE) |
2227 { | 2255 { |
2228 if(v_hue < -100) v_hue = -100; | 2256 if(vo_gamma_hue < -100) vo_gamma_hue = -100; |
2229 } | 2257 } |
2230 else | 2258 else |
2231 { | 2259 { |
2232 if ( v_hue < 0 ) v_hue = 0; | 2260 if ( vo_gamma_hue < 0 ) vo_gamma_hue = 0; |
2233 } | 2261 } |
2234 } | 2262 } |
2235 if(set_video_colors(sh_video,"Hue",v_hue)){ | 2263 if(set_video_colors(sh_video,"Hue",vo_gamma_hue)){ |
2236 #ifdef USE_OSD | 2264 #ifdef USE_OSD |
2237 if(osd_level){ | 2265 if(osd_level){ |
2238 osd_visible=sh_video->fps; // 1 sec | 2266 osd_visible=sh_video->fps; // 1 sec |
2239 vo_osd_progbar_type=OSD_HUE; | 2267 vo_osd_progbar_type=OSD_HUE; |
2240 vo_osd_progbar_value=((v_hue)<<8)/100; | 2268 vo_osd_progbar_value=((vo_gamma_hue)<<8)/100; |
2241 if(v_hw_equ_cap) vo_osd_progbar_value = ((v_hue+100)<<8)/200; | 2269 if(v_hw_equ_cap) vo_osd_progbar_value = ((vo_gamma_hue+100)<<8)/200; |
2242 vo_osd_changed(OSDTYPE_PROGBAR); | 2270 vo_osd_changed(OSDTYPE_PROGBAR); |
2243 } | 2271 } |
2244 #endif | 2272 #endif |
2245 } | 2273 } |
2246 break; | 2274 break; |
2247 | 2275 |
2248 // Saturation: | 2276 // Saturation: |
2249 case '7': | 2277 case '7': |
2250 case '8': | 2278 case '8': |
2251 if(c=='8'){ | 2279 if(c=='8'){ |
2252 if ( ++v_saturation > 100 ) v_saturation = 100; | 2280 if ( ++vo_gamma_saturation > 100 ) vo_gamma_saturation = 100; |
2253 } else { | 2281 } else { |
2254 --v_saturation; | 2282 --vo_gamma_saturation; |
2255 if(v_hw_equ_cap & VEQ_CAP_SATURATION) | 2283 if(v_hw_equ_cap & VEQ_CAP_SATURATION) |
2256 { | 2284 { |
2257 if(v_saturation < -100) v_saturation = -100; | 2285 if(vo_gamma_saturation < -100) vo_gamma_saturation = -100; |
2258 } | 2286 } |
2259 else | 2287 else |
2260 { | 2288 { |
2261 if ( v_saturation < 0 ) v_saturation = 0; | 2289 if ( vo_gamma_saturation < 0 ) vo_gamma_saturation = 0; |
2262 } | 2290 } |
2263 } | 2291 } |
2264 if(set_video_colors(sh_video,"Saturation",v_saturation)){ | 2292 if(set_video_colors(sh_video,"Saturation",vo_gamma_saturation)){ |
2265 #ifdef USE_OSD | 2293 #ifdef USE_OSD |
2266 if(osd_level){ | 2294 if(osd_level){ |
2267 osd_visible=sh_video->fps; // 1 sec | 2295 osd_visible=sh_video->fps; // 1 sec |
2268 vo_osd_progbar_type=OSD_SATURATION; | 2296 vo_osd_progbar_type=OSD_SATURATION; |
2269 vo_osd_progbar_value=((v_saturation)<<8)/100; | 2297 vo_osd_progbar_value=((vo_gamma_saturation)<<8)/100; |
2270 if(v_hw_equ_cap) vo_osd_progbar_value = ((v_saturation+100)<<8)/200; | 2298 if(v_hw_equ_cap) vo_osd_progbar_value = ((vo_gamma_saturation+100)<<8)/200; |
2271 vo_osd_changed(OSDTYPE_PROGBAR); | 2299 vo_osd_changed(OSDTYPE_PROGBAR); |
2272 } | 2300 } |
2273 #endif | 2301 #endif |
2274 } | 2302 } |
2275 break; | 2303 break; |
2411 } | 2439 } |
2412 case MP_CMD_MIXER_USEMASTER : { | 2440 case MP_CMD_MIXER_USEMASTER : { |
2413 } break; | 2441 } break; |
2414 case MP_CMD_CONTRAST : { | 2442 case MP_CMD_CONTRAST : { |
2415 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; | 2443 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; |
2444 int e; | |
2416 if(abs) | 2445 if(abs) |
2417 v_cont = v > 100 ? 100 : v; | 2446 vo_gamma_contrast = v > 100 ? 100 : v; |
2418 else { | 2447 else { |
2419 if ( (v_cont += v) > 100 ) v_cont = 100; | 2448 if ( (vo_gamma_contrast += v) > 100 ) vo_gamma_contrast = 100; |
2420 } | 2449 } |
2421 if(v_hw_equ_cap & VEQ_CAP_CONTRAST) { | 2450 if(vo_gamma_contrast < -100) vo_gamma_contrast = -100; |
2422 if(v_cont < -100) v_cont = -100; | 2451 if(v_hw_equ_cap & VEQ_CAP_CONTRAST) e=vo_gamma_contrast; |
2423 } else { | 2452 else e=( vo_gamma_contrast + 100 ) / 2; |
2424 if(v_cont < 0) v_cont = 0; | 2453 if(set_video_colors(sh_video,"Contrast",e)){ |
2425 } | |
2426 if(set_video_colors(sh_video,"Contrast",v_cont)){ | |
2427 #ifdef USE_OSD | 2454 #ifdef USE_OSD |
2428 if(osd_level){ | 2455 if(osd_level){ |
2429 osd_visible=sh_video->fps; // 1 sec | 2456 osd_visible=sh_video->fps; // 1 sec |
2430 vo_osd_progbar_type=OSD_CONTRAST; | 2457 vo_osd_progbar_type=OSD_CONTRAST; |
2431 if(v_hw_equ_cap & VEQ_CAP_CONTRAST) | 2458 vo_osd_progbar_value=(vo_gamma_contrast<<7)/100 + 128; |
2432 vo_osd_progbar_value=((v_cont)<<7)/100 + 128; | |
2433 else | |
2434 vo_osd_progbar_value=((v_cont)<<8)/100; | |
2435 vo_osd_changed(OSDTYPE_PROGBAR); | 2459 vo_osd_changed(OSDTYPE_PROGBAR); |
2436 } | 2460 } |
2437 #endif | 2461 #endif |
2438 } | 2462 } |
2439 } break; | 2463 } break; |
2440 case MP_CMD_BRIGHTNESS : { | 2464 case MP_CMD_BRIGHTNESS : { |
2441 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; | 2465 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; |
2466 int e; | |
2442 if(abs) | 2467 if(abs) |
2443 v_bright = v > 100 ? 100 : v; | 2468 vo_gamma_brightness = v > 100 ? 100 : v; |
2444 else { | 2469 else { |
2445 if ( (v_bright += v) > 100 ) v_bright = 100; | 2470 if ( (vo_gamma_brightness += v) > 100 ) vo_gamma_brightness = 100; |
2446 } | 2471 } |
2447 if(v_hw_equ_cap & VEQ_CAP_BRIGHTNESS) { | 2472 if ( vo_gamma_brightness < -100 ) vo_gamma_brightness = -100; |
2448 if(v_bright < -100) v_bright = -100; | 2473 if ( v_hw_equ_cap & VEQ_CAP_BRIGHTNESS ) e=vo_gamma_brightness; |
2449 } else { | 2474 else e=( vo_gamma_brightness + 100 ) / 2; |
2450 if ( v_bright < 0 ) v_bright = 0; | 2475 if(set_video_colors(sh_video,"Brightness",e)){ |
2451 } | |
2452 if(set_video_colors(sh_video,"Brightness",v_bright)){ | |
2453 #ifdef USE_OSD | 2476 #ifdef USE_OSD |
2454 if(osd_level){ | 2477 if(osd_level){ |
2455 osd_visible=sh_video->fps; // 1 sec | 2478 osd_visible=sh_video->fps; // 1 sec |
2456 vo_osd_progbar_type=OSD_BRIGHTNESS; | 2479 vo_osd_progbar_type=OSD_BRIGHTNESS; |
2457 if(v_hw_equ_cap & VEQ_CAP_BRIGHTNESS) | 2480 vo_osd_progbar_value=(vo_gamma_brightness<<7)/100 + 128; |
2458 vo_osd_progbar_value=((v_bright)<<7)/100 + 128; | 2481 vo_osd_changed(OSDTYPE_PROGBAR); |
2459 else | 2482 } |
2460 vo_osd_progbar_value=((v_bright)<<8)/100; | 2483 #endif // USE_OSD |
2461 vo_osd_changed(OSDTYPE_PROGBAR); | 2484 } |
2462 } | |
2463 #endif | |
2464 } | |
2465 } break; | 2485 } break; |
2466 case MP_CMD_HUE : { | 2486 case MP_CMD_HUE : { |
2467 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; | 2487 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; |
2488 int e; | |
2468 if(abs) | 2489 if(abs) |
2469 v_hue = v > 100 ? 100 : v; | 2490 vo_gamma_hue = v > 100 ? 100 : v; |
2470 else { | 2491 else { |
2471 if ( (v_hue += v) > 100 ) v_hue = 100; | 2492 if ( (vo_gamma_hue += v) > 100 ) vo_gamma_hue = 100; |
2472 } | 2493 } |
2473 if(v_hw_equ_cap & VEQ_CAP_HUE) { | 2494 if ( vo_gamma_hue < -100 ) vo_gamma_hue = -100; |
2474 if(v_hue < -100) v_hue = -100; | 2495 if(v_hw_equ_cap & VEQ_CAP_HUE) e=vo_gamma_hue; |
2475 } else { | 2496 else e=( vo_gamma_hue + 100 ) / 2; |
2476 if ( v_hue < 0 ) v_hue = 0; | 2497 if(set_video_colors(sh_video,"Hue",e)){ |
2477 } | |
2478 if(set_video_colors(sh_video,"Hue",v_hue)){ | |
2479 #ifdef USE_OSD | 2498 #ifdef USE_OSD |
2480 if(osd_level){ | 2499 if(osd_level){ |
2481 osd_visible=sh_video->fps; // 1 sec | 2500 osd_visible=sh_video->fps; // 1 sec |
2482 vo_osd_progbar_type=OSD_HUE; | 2501 vo_osd_progbar_type=OSD_HUE; |
2483 if(v_hw_equ_cap & VEQ_CAP_HUE) | 2502 vo_osd_progbar_value=(vo_gamma_hue<<7)/100 + 128; |
2484 vo_osd_progbar_value=((v_hue)<<7)/100 + 128; | |
2485 else | |
2486 vo_osd_progbar_value=((v_hue)<<8)/100; | |
2487 vo_osd_changed(OSDTYPE_PROGBAR); | 2503 vo_osd_changed(OSDTYPE_PROGBAR); |
2488 } | 2504 } |
2489 #endif | 2505 #endif |
2490 } | 2506 } |
2491 } break; | 2507 } break; |
2492 case MP_CMD_SATURATION : { | 2508 case MP_CMD_SATURATION : { |
2493 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; | 2509 int v = cmd->args[0].v.i, abs = cmd->args[1].v.i; |
2510 int e; | |
2494 if(abs) | 2511 if(abs) |
2495 v_saturation = v > 100 ? 100 : v; | 2512 vo_gamma_saturation = v > 100 ? 100 : v; |
2496 else { | 2513 else { |
2497 if ( (v_saturation += v) > 100 ) v_saturation = 100; | 2514 if ( (vo_gamma_saturation += v) > 100 ) vo_gamma_saturation = 100; |
2498 } | 2515 } |
2499 if(v_hw_equ_cap & VEQ_CAP_SATURATION) { | 2516 if ( vo_gamma_saturation < -100 ) vo_gamma_saturation = -100; |
2500 if(v_saturation < -100) v_saturation = -100; | 2517 if(v_hw_equ_cap & VEQ_CAP_SATURATION) e=vo_gamma_saturation; |
2501 } else { | 2518 else e=( vo_gamma_saturation + 100 ) / 2; |
2502 if ( v_saturation < 0 ) v_saturation = 0; | 2519 if(set_video_colors(sh_video,"Saturation",e)){ |
2503 } | |
2504 if(set_video_colors(sh_video,"Saturation",v_saturation)){ | |
2505 #ifdef USE_OSD | 2520 #ifdef USE_OSD |
2506 if(osd_level){ | 2521 if(osd_level){ |
2507 osd_visible=sh_video->fps; // 1 sec | 2522 osd_visible=sh_video->fps; // 1 sec |
2508 vo_osd_progbar_type=OSD_SATURATION; | 2523 vo_osd_progbar_type=OSD_SATURATION; |
2509 if(v_hw_equ_cap & VEQ_CAP_SATURATION) | 2524 vo_osd_progbar_value=(vo_gamma_saturation<<7)/100 + 128; |
2510 vo_osd_progbar_value=((v_saturation)<<7)/100 + 128; | |
2511 else | |
2512 vo_osd_progbar_value=((v_saturation)<<8)/100; | |
2513 vo_osd_changed(OSDTYPE_PROGBAR); | 2525 vo_osd_changed(OSDTYPE_PROGBAR); |
2514 } | 2526 } |
2515 #endif | 2527 #endif |
2516 } | 2528 } |
2517 } break; | 2529 } break; |