osxaudio: Directly return the ringbuffer's caps if it is acquired
authorSebastian Dröge <sebastian@centricular.com>
Mon, 22 Dec 2014 14:33:51 +0000 (15:33 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 22 Dec 2014 14:33:51 +0000 (15:33 +0100)
sys/osxaudio/gstosxaudiosink.c
sys/osxaudio/gstosxaudiosrc.c

index e1b7e0f..bd373fa 100644 (file)
@@ -363,15 +363,12 @@ gst_osx_audio_sink_getcaps (GstBaseSink * sink, GstCaps * filter)
   if (buf) {
     GST_OBJECT_LOCK (buf);
 
-    if (buf->acquired) {
+    if (buf->acquired && buf->spec.caps) {
       /* Caps are fixed, use what we have */
-      ret = gst_pad_get_current_caps (GST_BASE_SINK_PAD (sink));
-      if (!ret) {
-        GST_OBJECT_UNLOCK (buf);
-        g_return_val_if_reached (NULL);
-      }
+      ret = gst_caps_ref (buf->spec.caps);
+    }
 
-    } else if (buf->open && !osxsink->cached_caps) {
+    if (!ret && buf->open && !osxsink->cached_caps) {
       /* Device is open, let's probe its caps */
       gst_osx_audio_sink_probe_caps (osxsink);
     }
index 670ec62..a179882 100644 (file)
@@ -318,15 +318,12 @@ gst_osx_audio_src_get_caps (GstBaseSrc * src, GstCaps * filter)
   if (buf) {
     GST_OBJECT_LOCK (buf);
 
-    if (buf->acquired) {
+    if (buf->acquired && buf->spec.caps) {
       /* Caps are fixed, use what we have */
-      ret = gst_pad_get_current_caps (GST_BASE_SINK_PAD (src));
-      if (!ret) {
-        GST_OBJECT_UNLOCK (buf);
-        g_return_val_if_reached (NULL);
-      }
+      ret = gst_caps_ref (buf->spec.caps);
+    }
 
-    } else if (buf->open && !osxsrc->cached_caps) {
+    if (!ret && buf->open && !osxsrc->cached_caps) {
       /* Device is open, let's probe its caps */
       gst_osx_audio_src_probe_caps (osxsrc);
     }