directsoundsink: add support for DTS
authorAndoni Morales Alastruey <ylatuya@gmail.com>
Fri, 25 May 2012 10:19:09 +0000 (10:19 +0000)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 4 Jul 2012 17:54:55 +0000 (19:54 +0200)
sys/directsound/gstdirectsoundsink.c

index df56c65..544dfbb 100644 (file)
@@ -114,7 +114,8 @@ static GstStaticPadTemplate directsoundsink_sink_factory =
         "format = (string) S8, "
         "layout = (string) interleaved, "
         "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ];"
-        "audio/x-ac3, framed = (boolean) true;"));
+        "audio/x-ac3, framed = (boolean) true;"
+        "audio/x-dts, framed = (boolean) true;"));
 
 enum
 {
@@ -393,7 +394,8 @@ gst_directsound_sink_is_spdif_format (GstDirectSoundSink * dsoundsink)
 {
   GstAudioRingBufferFormatType type;
   type = GST_AUDIO_BASE_SINK (dsoundsink)->ringbuffer->spec.type;
-  return type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3;
+  return type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3 ||
+      type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS;
 }
 
 static gboolean
@@ -731,6 +733,7 @@ gst_directsound_probe_supported_formats (GstDirectSoundSink * dsoundsink,
         "(IDirectSound_CreateSoundBuffer returned: %s)\n",
         DXGetErrorString9 (hRes));
     caps = gst_caps_subtract (caps, gst_caps_new_empty_simple ("audio/x-ac3"));
+    caps = gst_caps_subtract (caps, gst_caps_new_empty_simple ("audio/x-dts"));
   } else {
     GST_INFO_OBJECT (dsoundsink, "AC3 passthrough supported");
     hRes = IDirectSoundBuffer_Release (dsoundsink->pDSBSecondary);
@@ -742,6 +745,7 @@ gst_directsound_probe_supported_formats (GstDirectSoundSink * dsoundsink,
   }
 #else
   caps = gst_caps_subtract (caps, gst_caps_new_simple ("audio/x-ac3", NULL));
+  caps = gst_caps_subtract (caps, gst_caps_new_simple ("audio/x-dts", NULL));
 #endif
 
   return caps;