diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2008-07-05 16:47:32 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-07-05 16:47:32 +0000 |
commit | d7c49f75d6dace82b2038a2a5c647822059dd6ed (patch) | |
tree | a5550cee43baa7ad41555c1c2b77ba36f17e60fd /gst/deinterlace2/gstdeinterlace2.h | |
parent | 8fccf53fc2d070a4938ceb05b164f4a273388b20 (diff) | |
download | gst-plugins-bad-d7c49f75d6dace82b2038a2a5c647822059dd6ed.tar.gz gst-plugins-bad-d7c49f75d6dace82b2038a2a5c647822059dd6ed.tar.bz2 gst-plugins-bad-d7c49f75d6dace82b2038a2a5c647822059dd6ed.zip |
gst/deinterlace2/: Use a GstObject subtype for the deinterlacing methods and export the different settings for each d...
Original commit message from CVS:
* gst/deinterlace2/Makefile.am:
* gst/deinterlace2/gstdeinterlace2.c:
(gst_deinterlace_method_class_init), (gst_deinterlace_method_init),
(gst_deinterlace_method_deinterlace_frame),
(gst_deinterlace_method_get_fields_required),
(gst_deinterlace2_methods_get_type), (_do_init),
(gst_deinterlace2_set_method), (gst_deinterlace2_class_init),
(gst_deinterlace2_child_proxy_get_child_by_index),
(gst_deinterlace2_child_proxy_get_children_count),
(gst_deinterlace2_child_proxy_interface_init),
(gst_deinterlace2_init), (gst_deinterlace2_finalize),
(gst_deinterlace2_chain), (gst_deinterlace2_src_query):
* gst/deinterlace2/gstdeinterlace2.h:
* gst/deinterlace2/tvtime/greedy.c:
(deinterlace_greedy_packed422_scanline_c),
(deinterlace_greedy_packed422_scanline_mmx),
(deinterlace_greedy_packed422_scanline_mmxext),
(deinterlace_frame_di_greedy),
(gst_deinterlace_method_greedy_l_set_property),
(gst_deinterlace_method_greedy_l_get_property),
(gst_deinterlace_method_greedy_l_class_init),
(gst_deinterlace_method_greedy_l_init):
* gst/deinterlace2/tvtime/greedyh.asm:
* gst/deinterlace2/tvtime/greedyh.c: (greedyDScaler_C),
(deinterlace_frame_di_greedyh),
(gst_deinterlace_method_greedy_h_set_property),
(gst_deinterlace_method_greedy_h_get_property),
(gst_deinterlace_method_greedy_h_class_init),
(gst_deinterlace_method_greedy_h_init):
* gst/deinterlace2/tvtime/greedyh.h:
* gst/deinterlace2/tvtime/plugins.h:
* gst/deinterlace2/tvtime/tomsmocomp.c:
(gst_deinterlace_method_tomsmocomp_set_property),
(gst_deinterlace_method_tomsmocomp_get_property),
(gst_deinterlace_method_tomsmocomp_class_init),
(gst_deinterlace_method_tomsmocomp_init):
* gst/deinterlace2/tvtime/tomsmocomp.h:
* gst/deinterlace2/tvtime/tomsmocomp/TomsMoCompAll.inc:
* gst/deinterlace2/tvtime/vfir.c: (deinterlace_frame_vfir),
(gst_deinterlace_method_vfir_class_init),
(gst_deinterlace_method_vfir_init):
Use a GstObject subtype for the deinterlacing methods and export
the different settings for each deinterlacing method via GObject
properties.
Implement GstChildProxy interface to allow access to the used
deinterlacing method and to allow adjusting the different settings.
Move global variables of the tomsmocomp deinterlacing method into
function local variables to make it possible to use this deinterlacing
method from different instances.
Diffstat (limited to 'gst/deinterlace2/gstdeinterlace2.h')
-rw-r--r-- | gst/deinterlace2/gstdeinterlace2.h | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/gst/deinterlace2/gstdeinterlace2.h b/gst/deinterlace2/gstdeinterlace2.h index b312037c..815e04eb 100644 --- a/gst/deinterlace2/gstdeinterlace2.h +++ b/gst/deinterlace2/gstdeinterlace2.h @@ -1,7 +1,7 @@ /* * GStreamer * Copyright (C) 2005 Martin Eikermann <meiker@upb.de> - * Copyright (C) 2008 Sebastian Dröge <slomo@circular-chaos.org> + * Copyright (C) 2008 Sebastian Dröge <slomo@collabora.co.uk> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -45,29 +45,40 @@ G_BEGIN_DECLS typedef struct _GstDeinterlace2 GstDeinterlace2; typedef struct _GstDeinterlace2Class GstDeinterlace2Class; -typedef struct deinterlace_setting_s deinterlace_setting_t; -typedef struct deinterlace_method_s deinterlace_method_t; +#define GST_TYPE_DEINTERLACE_METHOD (gst_deinterlace_method_get_type ()) +#define GST_IS_DEINTERLACE_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DEINTERLACE_METHOD)) +#define GST_IS_DEINTERLACE_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DEINTERLACE_METHOD)) +#define GST_DEINTERLACE_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_DEINTERLACE_METHOD, GstDeinterlaceMethodClass)) +#define GST_DEINTERLACE_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DEINTERLACE_METHOD, GstDeinterlaceMethod)) +#define GST_DEINTERLACE_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DEINTERLACE_METHOD, GstDeinterlaceMethodClass)) +#define GST_DEINTERLACE_METHOD_CAST(obj) ((GstDeinterlaceMethod*)(obj)) -typedef void (*deinterlace_frame_t) (GstDeinterlace2 * object); +typedef struct _GstDeinterlaceMethod GstDeinterlaceMethod; +typedef struct _GstDeinterlaceMethodClass GstDeinterlaceMethodClass; /* * This structure defines the deinterlacer plugin. */ -struct deinterlace_method_s -{ - int version; - const char *name; - const char *short_name; - int fields_required; - int accelrequired; - int doscalerbob; - int numsettings; - deinterlace_setting_t *settings; - int scanlinemode; - deinterlace_frame_t deinterlace_frame; - const char *description[10]; + +struct _GstDeinterlaceMethod { + GstObject parent; }; +struct _GstDeinterlaceMethodClass { + GstObjectClass parent_class; + guint fields_required; + guint latency; + + gboolean available; + + void (*deinterlace_frame) (GstDeinterlaceMethod *self, GstDeinterlace2 * object); + + const gchar *name; + const gchar *nick; +}; + +GType gst_deinterlace_method_get_type (void); + #define MAX_FIELD_HISTORY 10 #define PICTURE_PROGRESSIVE 0 @@ -75,8 +86,6 @@ struct deinterlace_method_s #define PICTURE_INTERLACED_TOP 2 #define PICTURE_INTERLACED_MASK (PICTURE_INTERLACED_BOTTOM | PICTURE_INTERLACED_TOP) -typedef void (MEMCPY_FUNC) (void *pOutput, const void *pInput, size_t nSize); - typedef struct { /* pointer to the start of data for this field */ @@ -87,7 +96,7 @@ typedef struct typedef enum { - GST_DEINTERLACE2_TOM, + GST_DEINTERLACE2_TOMSMOCOMP, GST_DEINTERLACE2_GREEDY_H, GST_DEINTERLACE2_GREEDY_L, GST_DEINTERLACE2_VFIR @@ -115,7 +124,6 @@ struct _GstDeinterlace2 guint history_count; - guint cpu_feature_flags; GstDeinterlace2FieldLayout field_layout; guint frame_size; @@ -124,7 +132,7 @@ struct _GstDeinterlace2 GstDeinterlace2Fields fields; GstDeinterlace2Methods method_id; - deinterlace_method_t *method; + GstDeinterlaceMethod *method; /* The most recent pictures PictureHistory[0] is always the most recent. |