relocate packages on recipes-base/recipes-enigma2/recipes-wlan.
[vuplus_openvuplus] / meta-openvuplus / recipes-multimedia / gstreamer / gst-plugins-ugly-0.10.19 / dvdsubdec-addproperty-singlebuffer.patch
1 From: Fraxinas <andreas.frisch@multimedia-labs.de>
2 Subject: [PATCH] dvdsubdec: add singlebuffer property (fixes bug 619136)
3
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
7 @@ -41,6 +41,10 @@
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);
15  
16  static GstFlowReturn gst_send_subtitle_frame (GstDvdSubDec * dec,
17      GstClockTime end_ts);
18 @@ -100,6 +104,9 @@
19  }
20  RLE_state;
21  
22 +#define ARG_SINGLEBUFFER               0x01
23 +#define DEFAULT_SINGLEBUFFER           FALSE
24 +
25  static void
26  gst_dvd_sub_dec_base_init (gpointer klass)
27  {
28 @@ -123,6 +130,13 @@
29  
30    gobject_class = (GObjectClass *) klass;
31  
32 +  gobject_class->set_property = gst_dvd_sub_set_property;
33 +  gobject_class->get_property = gst_dvd_sub_get_property;
34 +
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));
38 +  
39    gobject_class->finalize = gst_dvd_sub_dec_finalize;
40  }
41  
42 @@ -167,6 +181,40 @@
43    dec->out_buffer = NULL;
44    dec->buf_dirty = TRUE;
45    dec->use_ARGB = FALSE;
46 +  
47 +  dec->singlebuffer = DEFAULT_SINGLEBUFFER;
48 +}
49 +
50 +static void
51 +gst_dvd_sub_set_property (GObject * object, guint prop_id,
52 +    const GValue * value, GParamSpec * pspec)
53 +{
54 +  GstDvdSubDec *src;
55 +
56 +  src = GST_DVD_SUB_DEC (object);
57 +
58 +  switch (prop_id) {
59 +    case ARG_SINGLEBUFFER:
60 +      src->singlebuffer = g_value_get_boolean (value);
61 +      break;
62 +    default:
63 +      break;
64 +  }
65 +}
66 +
67 +static void
68 +gst_dvd_sub_get_property (GObject * object, guint prop_id, GValue * value,
69 +    GParamSpec * pspec)
70 +{
71 +  GstDvdSubDec *src;
72 +
73 +  src = GST_DVD_SUB_DEC (object);
74 +
75 +  switch (prop_id) {
76 +    case ARG_SINGLEBUFFER:
77 +      g_value_set_boolean (value, src->singlebuffer);
78 +      break;
79 +  }
80  }
81  
82  static void
83 @@ -697,6 +745,8 @@
84      dec->out_buffer = out_buf;
85      dec->buf_dirty = FALSE;
86    }
87 +  else if (dec->singlebuffer)
88 +         goto out;
89  
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
95 @@ -91,6 +91,8 @@
96  
97    GstBuffer *out_buffer;
98    gboolean buf_dirty;
99 +  
100 +  gboolean singlebuffer;
101  };
102  
103  struct _GstDvdSubDecClass