vdpauvideopostprocess: add inverse-telecine property

This commit is contained in:
Carl-Anton Ingmarsson 2009-08-19 22:23:17 +02:00 committed by Jan Schmidt
parent 13075eb07e
commit ba69dd4747
2 changed files with 23 additions and 1 deletions

View file

@ -68,7 +68,8 @@ enum
PROP_DEINTERLACE_MODE, PROP_DEINTERLACE_MODE,
PROP_DEINTERLACE_METHOD, PROP_DEINTERLACE_METHOD,
PROP_NOISE_REDUCTION, PROP_NOISE_REDUCTION,
PROP_SHARPENING PROP_SHARPENING,
PROP_INVERSE_TELECINE
}; };
/* the capabilities of the inputs and outputs. /* the capabilities of the inputs and outputs.
@ -403,6 +404,8 @@ gst_vdp_vpp_create_mixer (GstVdpVideoPostProcess * vpp, GstVdpDevice * device)
features[n_features++] = VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION; features[n_features++] = VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION;
if (vpp->sharpening != 0.0) if (vpp->sharpening != 0.0)
features[n_features++] = VDP_VIDEO_MIXER_FEATURE_SHARPNESS; features[n_features++] = VDP_VIDEO_MIXER_FEATURE_SHARPNESS;
if (vpp->inverse_telecine)
features[n_features++] = VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE;
status = status =
device->vdp_video_mixer_create (device->device, n_features, features, device->vdp_video_mixer_create (device->device, n_features, features,
@ -858,6 +861,9 @@ gst_vdp_vpp_get_property (GObject * object, guint property_id, GValue * value,
case PROP_SHARPENING: case PROP_SHARPENING:
g_value_set_float (value, vpp->sharpening); g_value_set_float (value, vpp->sharpening);
break; break;
case PROP_INVERSE_TELECINE:
g_value_set_boolean (value, vpp->inverse_telecine);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break; break;
@ -943,6 +949,16 @@ gst_vdp_vpp_set_property (GObject * object, guint property_id,
} }
break; break;
} }
case PROP_INVERSE_TELECINE:
{
vpp->inverse_telecine = g_value_get_boolean (value);
if (vpp->device) {
gst_vdp_vpp_activate_feature (vpp,
VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE, vpp->inverse_telecine);
}
break;
}
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break; break;
@ -1010,6 +1026,11 @@ gst_vdp_vpp_class_init (GstVdpVideoPostProcessClass * klass)
"The amount of sharpening or blurring to be applied", -1.0, 1.0, 0.0, "The amount of sharpening or blurring to be applied", -1.0, 1.0, 0.0,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_INVERSE_TELECINE,
g_param_spec_boolean ("inverse-telecine", "Inverse telecine",
"Whether inverse telecine should be used", FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
gstelement_class->change_state = gst_vdp_vpp_change_state; gstelement_class->change_state = gst_vdp_vpp_change_state;
} }

View file

@ -84,6 +84,7 @@ struct _GstVdpVideoPostProcess
gfloat noise_reduction; gfloat noise_reduction;
gfloat sharpening; gfloat sharpening;
gboolean inverse_telecine;
}; };
struct _GstVdpVideoPostProcessClass struct _GstVdpVideoPostProcessClass