yadif: Add mode property
Copy mode from deinterlace element. Isn't actually implemented in yadif, every frame is deinterlaced, so effectively mode=1.
This commit is contained in:
parent
e5e7fccd03
commit
e614bd037e
@ -100,9 +100,12 @@ static GstFlowReturn gst_yadif_transform_ip (GstBaseTransform * trans,
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PROP_0
|
PROP_0,
|
||||||
|
PROP_MODE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define DEFAULT_MODE GST_DEINTERLACE_MODE_AUTO
|
||||||
|
|
||||||
/* pad templates */
|
/* pad templates */
|
||||||
|
|
||||||
static GstStaticPadTemplate gst_yadif_sink_template =
|
static GstStaticPadTemplate gst_yadif_sink_template =
|
||||||
@ -121,6 +124,26 @@ GST_STATIC_PAD_TEMPLATE ("src",
|
|||||||
",interlace-mode=(string)progressive")
|
",interlace-mode=(string)progressive")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#define GST_TYPE_DEINTERLACE_MODES (gst_deinterlace_modes_get_type ())
|
||||||
|
static GType
|
||||||
|
gst_deinterlace_modes_get_type (void)
|
||||||
|
{
|
||||||
|
static GType deinterlace_modes_type = 0;
|
||||||
|
|
||||||
|
static const GEnumValue modes_types[] = {
|
||||||
|
{GST_DEINTERLACE_MODE_AUTO, "Auto detection", "auto"},
|
||||||
|
{GST_DEINTERLACE_MODE_INTERLACED, "Force deinterlacing", "interlaced"},
|
||||||
|
{GST_DEINTERLACE_MODE_DISABLED, "Run in passthrough mode", "disabled"},
|
||||||
|
{0, NULL, NULL},
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!deinterlace_modes_type) {
|
||||||
|
deinterlace_modes_type =
|
||||||
|
g_enum_register_static ("GstYadifModes", modes_types);
|
||||||
|
}
|
||||||
|
return deinterlace_modes_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* class initialization */
|
/* class initialization */
|
||||||
|
|
||||||
@ -198,6 +221,13 @@ gst_yadif_class_init (GstYadifClass * klass)
|
|||||||
base_transform_class->transform_ip =
|
base_transform_class->transform_ip =
|
||||||
GST_DEBUG_FUNCPTR (gst_yadif_transform_ip);
|
GST_DEBUG_FUNCPTR (gst_yadif_transform_ip);
|
||||||
|
|
||||||
|
g_object_class_install_property (gobject_class, PROP_MODE,
|
||||||
|
g_param_spec_enum ("mode", "Deinterlace Mode",
|
||||||
|
"Deinterlace mode",
|
||||||
|
GST_TYPE_DEINTERLACE_MODES,
|
||||||
|
DEFAULT_MODE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -215,9 +245,12 @@ void
|
|||||||
gst_yadif_set_property (GObject * object, guint property_id,
|
gst_yadif_set_property (GObject * object, guint property_id,
|
||||||
const GValue * value, GParamSpec * pspec)
|
const GValue * value, GParamSpec * pspec)
|
||||||
{
|
{
|
||||||
/* GstYadif *yadif = GST_YADIF (object); */
|
GstYadif *yadif = GST_YADIF (object);
|
||||||
|
|
||||||
switch (property_id) {
|
switch (property_id) {
|
||||||
|
case PROP_MODE:
|
||||||
|
yadif->mode = g_value_get_enum (value);
|
||||||
|
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;
|
||||||
@ -228,9 +261,12 @@ void
|
|||||||
gst_yadif_get_property (GObject * object, guint property_id,
|
gst_yadif_get_property (GObject * object, guint property_id,
|
||||||
GValue * value, GParamSpec * pspec)
|
GValue * value, GParamSpec * pspec)
|
||||||
{
|
{
|
||||||
/* GstYadif *yadif = GST_YADIF (object); */
|
GstYadif *yadif = GST_YADIF (object);
|
||||||
|
|
||||||
switch (property_id) {
|
switch (property_id) {
|
||||||
|
case PROP_MODE:
|
||||||
|
g_value_set_enum (value, yadif->mode);
|
||||||
|
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;
|
||||||
|
@ -35,6 +35,12 @@ G_BEGIN_DECLS
|
|||||||
typedef struct _GstYadif GstYadif;
|
typedef struct _GstYadif GstYadif;
|
||||||
typedef struct _GstYadifClass GstYadifClass;
|
typedef struct _GstYadifClass GstYadifClass;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
GST_DEINTERLACE_MODE_AUTO,
|
||||||
|
GST_DEINTERLACE_MODE_INTERLACED,
|
||||||
|
GST_DEINTERLACE_MODE_DISABLED
|
||||||
|
} GstDeinterlaceMode;
|
||||||
|
|
||||||
struct _GstYadif
|
struct _GstYadif
|
||||||
{
|
{
|
||||||
GstBaseTransform base_yadif;
|
GstBaseTransform base_yadif;
|
||||||
@ -42,7 +48,7 @@ struct _GstYadif
|
|||||||
GstPad *sinkpad;
|
GstPad *sinkpad;
|
||||||
GstPad *srcpad;
|
GstPad *srcpad;
|
||||||
|
|
||||||
int mode;
|
GstDeinterlaceMode mode;
|
||||||
|
|
||||||
GstVideoInfo video_info;
|
GstVideoInfo video_info;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user