diff -ru gst-plugins-bad-0.10.21/gst/mpegdemux/gstmpegtsdemux.c src/gst/mpegdemux/gstmpegtsdemux.c
--- gst-plugins-bad-0.10.21/gst/mpegdemux/gstmpegtsdemux.c	2011-01-07 03:12:11.000000000 +0100
+++ src/gst/mpegdemux/gstmpegtsdemux.c	2011-02-10 18:48:56.005071994 +0100
@@ -128,8 +128,8 @@
       "dynamic_range = (int) [ 0, 255 ], " \
       "emphasis = (boolean) { FALSE, TRUE }, " \
       "mute = (boolean) { FALSE, TRUE }; " \
-    "audio/x-ac3; audio/x-eac3;" \
-    "audio/x-dts;" \
+    "audio/x-ac3; audio/x-eac3; audio/x-true-hd;" \
+    "audio/x-dts; audio/x-dts-hd; audio/x-dts-hd-ma;" \
     "audio/x-private-ts-lpcm" \
   )
 
@@ -663,6 +663,10 @@
         template = klass->private_template;
         name = g_strdup_printf ("audio_%04x", stream->PID);
         caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+      } else if (gst_mpeg_descriptor_find (stream->ES_info, DESC_DVB_DTS)) {
+        template = klass->private_template;
+        name = g_strdup_printf ("audio_%04x", stream->PID);
+        caps = gst_caps_new_simple ("audio/x-dts", NULL);
       } else if (gst_mpeg_descriptor_find (stream->ES_info, DESC_DVB_TELETEXT)) {
         template = klass->private_template;
         name = g_strdup_printf ("private_%04x", stream->PID);
@@ -768,13 +772,26 @@
       name = g_strdup_printf ("audio_%04x", stream->PID);
       caps = gst_caps_new_simple ("audio/x-eac3", NULL);
       break;
+    case ST_BD_AUDIO_AC3_TRUE_HD:
+      template = klass->audio_template;
+      name = g_strdup_printf ("audio_%04x", stream->PID);
+      caps = gst_caps_new_simple ("audio/x-true-hd", NULL);
+      break;
     case ST_PS_AUDIO_DTS:
     case ST_BD_AUDIO_DTS:
+      template = klass->audio_template;
+      name = g_strdup_printf ("audio_%04x", stream->PID);
+      caps = gst_caps_new_simple ("audio/x-dts", NULL);
+      break;
     case ST_BD_AUDIO_DTS_HD:
+      template = klass->audio_template;
+      name = g_strdup_printf ("audio_%04x", stream->PID);
+      caps = gst_caps_new_simple ("audio/x-dts-hd", NULL);
+      break;
     case ST_BD_AUDIO_DTS_HD_MASTER_AUDIO:
       template = klass->audio_template;
       name = g_strdup_printf ("audio_%04x", stream->PID);
-      caps = gst_caps_new_simple ("audio/x-dts", NULL);
+      caps = gst_caps_new_simple ("audio/x-dts-hd-ma", NULL);
       break;
     case ST_PS_AUDIO_LPCM:
       template = klass->audio_template;
