1 From: Fraxinas <andreas.frisch@multimedia-labs.de>
2 Subject: [PATCH] dvdsubdec: add singlebuffer property (fixes bug 619136)
4 diff -u a/gst/dvdsub/gstdvdsubdec.c b/gst/dvdsub/gstdvdsubdec.c
5 --- a/gst/dvdsub/gstdvdsubdec.c 2009-11-05 19:06:16.000000000 +0100
6 +++ b/gst/dvdsub/gstdvdsubdec.c 2010-05-26 16:27:06.000000000 +0200
8 static GstClockTime gst_dvd_sub_dec_get_event_delay (GstDvdSubDec * dec);
9 static gboolean gst_dvd_sub_dec_sink_event (GstPad * pad, GstEvent * event);
10 static gboolean gst_dvd_sub_dec_sink_setcaps (GstPad * pad, GstCaps * caps);
11 +static void gst_dvd_sub_set_property (GObject * object, guint prop_id,
12 + const GValue * value, GParamSpec * pspec);
13 +static void gst_dvd_sub_get_property (GObject * object, guint prop_id,
14 + GValue * value, GParamSpec * pspec);
16 static GstFlowReturn gst_send_subtitle_frame (GstDvdSubDec * dec,
22 +#define ARG_SINGLEBUFFER 0x01
23 +#define DEFAULT_SINGLEBUFFER FALSE
26 gst_dvd_sub_dec_base_init (gpointer klass)
30 gobject_class = (GObjectClass *) klass;
32 + gobject_class->set_property = gst_dvd_sub_set_property;
33 + gobject_class->get_property = gst_dvd_sub_get_property;
35 + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SINGLEBUFFER,
36 + g_param_spec_boolean ("singlebuffer", "Single Buffer", "invoke only one single buffer upon changed dvd subpicture. false will output continuous video stream",
37 + DEFAULT_SINGLEBUFFER, G_PARAM_READWRITE));
39 gobject_class->finalize = gst_dvd_sub_dec_finalize;
43 dec->out_buffer = NULL;
44 dec->buf_dirty = TRUE;
45 dec->use_ARGB = FALSE;
47 + dec->singlebuffer = DEFAULT_SINGLEBUFFER;
51 +gst_dvd_sub_set_property (GObject * object, guint prop_id,
52 + const GValue * value, GParamSpec * pspec)
56 + src = GST_DVD_SUB_DEC (object);
59 + case ARG_SINGLEBUFFER:
60 + src->singlebuffer = g_value_get_boolean (value);
68 +gst_dvd_sub_get_property (GObject * object, guint prop_id, GValue * value,
73 + src = GST_DVD_SUB_DEC (object);
76 + case ARG_SINGLEBUFFER:
77 + g_value_set_boolean (value, src->singlebuffer);
84 dec->out_buffer = out_buf;
85 dec->buf_dirty = FALSE;
87 + else if (dec->singlebuffer)
90 out_buf = gst_buffer_create_sub (dec->out_buffer, 0,
91 GST_BUFFER_SIZE (dec->out_buffer));
92 diff -u a/gst/dvdsub/gstdvdsubdec.h b/gst/dvdsub/gstdvdsubdec.h
93 --- a/gst/dvdsub//gstdvdsubdec.h 2009-05-21 20:45:29.000000000 +0200
94 +++ b/gst/dvdsub/gstdvdsubdec.h 2010-05-26 13:39:32.000000000 +0200
97 GstBuffer *out_buffer;
100 + gboolean singlebuffer;
103 struct _GstDvdSubDecClass