void CVDPAU::SetDeinterlacing() { VdpStatus vdp_st; EDEINTERLACEMODE mode = g_settings.m_currentVideoSettings.m_DeinterlaceMode; EINTERLACEMETHOD method = g_settings.m_currentVideoSettings.m_InterlaceMethod; if (method == VS_INTERLACEMETHOD_AUTO) method = AutoInterlaceMethod(); VdpVideoMixerFeature feature[] = { VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL, VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL, VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE }; if (mode == VS_DEINTERLACEMODE_OFF) { VdpBool enabled[]={0,0,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else { if (method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL || method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF) { VdpBool enabled[]={1,0,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else if (method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL || method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF) { VdpBool enabled[]={1,1,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else if (method == VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE) { VdpBool enabled[]={1,0,1}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else { VdpBool enabled[]={0,0,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } } CheckStatus(vdp_st, __LINE__); }
void CVDPAU::SetHWUpscaling() { #ifdef VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 if(!Supports(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1) || !upScale) return; VdpVideoMixerFeature feature[] = { VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 }; VdpStatus vdp_st; VdpBool enabled[]={1}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); CheckStatus(vdp_st, __LINE__); #endif }
void CVDPAU::SetSharpness() { if(!Supports(VDP_VIDEO_MIXER_FEATURE_SHARPNESS)) return; VdpVideoMixerFeature feature[] = { VDP_VIDEO_MIXER_FEATURE_SHARPNESS }; VdpVideoMixerAttribute attributes[] = { VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL }; VdpStatus vdp_st; if (!g_settings.m_currentVideoSettings.m_Sharpness) { VdpBool enabled[]={0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); CheckStatus(vdp_st, __LINE__); return; } VdpBool enabled[]={1}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); CheckStatus(vdp_st, __LINE__); void* sh[] = { &g_settings.m_currentVideoSettings.m_Sharpness }; CLog::Log(LOGNOTICE,"Setting Sharpness to %f",g_settings.m_currentVideoSettings.m_Sharpness); vdp_st = vdp_video_mixer_set_attribute_values(videoMixer, ARSIZE(attributes), attributes, sh); CheckStatus(vdp_st, __LINE__); }
void CVDPAU::SetNoiseReduction() { if(!Supports(VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION)) return; VdpVideoMixerFeature feature[] = { VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION }; VdpVideoMixerAttribute attributes[] = { VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL }; VdpStatus vdp_st; if (!g_settings.m_currentVideoSettings.m_NoiseReduction) { VdpBool enabled[]= {0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); CheckStatus(vdp_st, __LINE__); return; } VdpBool enabled[]={1}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); CheckStatus(vdp_st, __LINE__); void* nr[] = { &g_settings.m_currentVideoSettings.m_NoiseReduction }; CLog::Log(LOGNOTICE,"Setting Noise Reduction to %f",g_settings.m_currentVideoSettings.m_NoiseReduction); vdp_st = vdp_video_mixer_set_attribute_values(videoMixer, ARSIZE(attributes), attributes, nr); CheckStatus(vdp_st, __LINE__); }
void CVDPAU::SetDeinterlacing() { VdpStatus vdp_st; EINTERLACEMETHOD method = g_settings.m_currentVideoSettings.m_InterlaceMethod; VdpVideoMixerFeature feature[] = { VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL, VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL, VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE }; if (method == VS_INTERLACEMETHOD_AUTO) { VdpBool enabled[]={1,0,0}; // Same features as VS_INTERLACEMETHOD_VDPAU_TEMPORAL vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else if (method == VS_INTERLACEMETHOD_AUTO_ION) { if (vid_height <= 576){ VdpBool enabled[]={1,1,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else if (vid_height > 576){ VdpBool enabled[]={1,0,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } } else if (method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL || method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF) { VdpBool enabled[]={1,0,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else if (method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL || method == VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF) { VdpBool enabled[]={1,1,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else if (method == VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE) { VdpBool enabled[]={1,0,1}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } else { VdpBool enabled[]={0,0,0}; vdp_st = vdp_video_mixer_set_feature_enables(videoMixer, ARSIZE(feature), feature, enabled); } CheckStatus(vdp_st, __LINE__); }