summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorCarl-Anton Ingmarsson <ca.ingmarsson@gmail.com>2009-08-19 22:23:17 +0200
committerJan Schmidt <thaytan@noraisin.net>2009-09-16 10:25:46 +0100
commitba69dd474719cf2408a2ad9416271dbcf5ccfdd1 (patch)
treeaaad1bcdc0cdff97b835aa5a5574f2a222e24c8c /sys
parent13075eb07edf7c97032e37bdde5500f116bc1fe7 (diff)
downloadgstreamer-plugins-bad-ba69dd474719cf2408a2ad9416271dbcf5ccfdd1.tar.gz
vdpauvideopostprocess: add inverse-telecine property
Diffstat (limited to 'sys')
-rw-r--r--sys/vdpau/gstvdpvideopostprocess.c23
-rw-r--r--sys/vdpau/gstvdpvideopostprocess.h1
2 files changed, 23 insertions, 1 deletions
diff --git a/sys/vdpau/gstvdpvideopostprocess.c b/sys/vdpau/gstvdpvideopostprocess.c
index fc5431510..6f055c528 100644
--- a/sys/vdpau/gstvdpvideopostprocess.c
+++ b/sys/vdpau/gstvdpvideopostprocess.c
@@ -68,7 +68,8 @@ enum
PROP_DEINTERLACE_MODE,
PROP_DEINTERLACE_METHOD,
PROP_NOISE_REDUCTION,
- PROP_SHARPENING
+ PROP_SHARPENING,
+ PROP_INVERSE_TELECINE
};
/* 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;
if (vpp->sharpening != 0.0)
features[n_features++] = VDP_VIDEO_MIXER_FEATURE_SHARPNESS;
+ if (vpp->inverse_telecine)
+ features[n_features++] = VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE;
status =
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:
g_value_set_float (value, vpp->sharpening);
break;
+ case PROP_INVERSE_TELECINE:
+ g_value_set_boolean (value, vpp->inverse_telecine);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -943,6 +949,16 @@ gst_vdp_vpp_set_property (GObject * object, guint property_id,
}
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:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
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,
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;
}
diff --git a/sys/vdpau/gstvdpvideopostprocess.h b/sys/vdpau/gstvdpvideopostprocess.h
index 1eed7aff8..be9ad1b92 100644
--- a/sys/vdpau/gstvdpvideopostprocess.h
+++ b/sys/vdpau/gstvdpvideopostprocess.h
@@ -84,6 +84,7 @@ struct _GstVdpVideoPostProcess
gfloat noise_reduction;
gfloat sharpening;
+ gboolean inverse_telecine;
};
struct _GstVdpVideoPostProcessClass