summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--gst-libs/gst/play/gstplay.c8
-rw-r--r--gst-libs/gst/play/play.c8
3 files changed, 18 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index add26c20..63d900d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2004-01-12 Julien MOUTTE <julien@moutte.net>
+ * gst-libs/gst/play/gstplay.c: (gst_play_get_sink_element): When
+ analyzing the pads of an element the bin is mostly in READY state so
+ no caps were negotiated. This helper function needs to work with
+ _get_caps directly then. I was not freeing them though, added that to
+ fix the mem leak.
+
+2004-01-12 Julien MOUTTE <julien@moutte.net>
+
* sys/ximage/ximagesink.c: (gst_ximagesink_chain):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain): Fixing the
direct put buffers detection. I prefer checking GST_BUFFER_PRIVATE
diff --git a/gst-libs/gst/play/gstplay.c b/gst-libs/gst/play/gstplay.c
index bcc5c4d1..dee3f8ef 100644
--- a/gst-libs/gst/play/gstplay.c
+++ b/gst-libs/gst/play/gstplay.c
@@ -923,14 +923,14 @@ gst_play_get_sink_element (GstPlay *play,
}
else {
/* If not a src pad checking caps */
- const GstCaps *caps;
+ GstCaps *caps;
GstStructure *structure;
gboolean has_video_cap = FALSE;
gboolean has_audio_cap = FALSE;
- caps = gst_pad_get_negotiated_caps (GST_PAD (pads->data));
+ caps = gst_pad_get_caps (GST_PAD (pads->data));
structure = gst_caps_get_structure (caps, 0);
-
+
if (strcmp (gst_structure_get_name (structure),
"audio/x-raw-int") == 0) {
has_audio_cap = TRUE;
@@ -943,6 +943,8 @@ gst_play_get_sink_element (GstPlay *play,
has_video_cap = TRUE;
}
+ gst_caps_free (caps);
+
switch (sink_type) {
case GST_PLAY_SINK_TYPE_AUDIO:
if (has_audio_cap)
diff --git a/gst-libs/gst/play/play.c b/gst-libs/gst/play/play.c
index bcc5c4d1..dee3f8ef 100644
--- a/gst-libs/gst/play/play.c
+++ b/gst-libs/gst/play/play.c
@@ -923,14 +923,14 @@ gst_play_get_sink_element (GstPlay *play,
}
else {
/* If not a src pad checking caps */
- const GstCaps *caps;
+ GstCaps *caps;
GstStructure *structure;
gboolean has_video_cap = FALSE;
gboolean has_audio_cap = FALSE;
- caps = gst_pad_get_negotiated_caps (GST_PAD (pads->data));
+ caps = gst_pad_get_caps (GST_PAD (pads->data));
structure = gst_caps_get_structure (caps, 0);
-
+
if (strcmp (gst_structure_get_name (structure),
"audio/x-raw-int") == 0) {
has_audio_cap = TRUE;
@@ -943,6 +943,8 @@ gst_play_get_sink_element (GstPlay *play,
has_video_cap = TRUE;
}
+ gst_caps_free (caps);
+
switch (sink_type) {
case GST_PLAY_SINK_TYPE_AUDIO:
if (has_audio_cap)