diff --git a/aml-tsdemux/amltsdemux.c b/aml-tsdemux/amltsdemux.c
index c2697fa..da08c0e 100644
--- a/aml-tsdemux/amltsdemux.c
+++ b/aml-tsdemux/amltsdemux.c
@@ -1450,6 +1450,14 @@
         break;
       }
       */
+      desc = mpegts_get_descriptor_from_stream (bstream, GST_MTS_DESC_DVB_DTS);
+      if (desc) {
+        GST_LOG ("dts audio");
+        is_audio = TRUE;
+        caps = gst_caps_new_empty_simple ("audio/x-dts");
+        break;
+      }
+
       desc = amlts_get_descriptor_from_stream (bstream, GST_MTS_DESC_DVB_AC3);
       if (desc) {
         GST_LOG_OBJECT (demux, "ac3 audio");
@@ -3352,19 +3360,21 @@
           "Got Keyframe, ready to go at %" GST_TIME_FORMAT,
           GST_TIME_ARGS (stream->pts));
 
-      if (bs->stream_type == GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS &&
-          bs->registration_id == DRF_ID_OPUS) {
-        buffer_list = parse_opus_access_unit (stream);
-        if (!buffer_list) {
-          res = GST_FLOW_ERROR;
-          goto beach;
-        }
-
-        if (gst_buffer_list_length (buffer_list) == 1) {
-          buffer = gst_buffer_ref (gst_buffer_list_get (buffer_list, 0));
-          gst_buffer_list_unref (buffer_list);
-          buffer_list = NULL;
-        }
+      if (bs->stream_type == GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS) {
+        if (bs->registration_id == DRF_ID_OPUS) {
+          buffer_list = parse_opus_access_unit (stream);
+          if (!buffer_list) {
+            res = GST_FLOW_ERROR;
+            goto beach;
+          }
+          if (gst_buffer_list_length (buffer_list) == 1) {
+            buffer = gst_buffer_ref (gst_buffer_list_get (buffer_list, 0));
+            gst_buffer_list_unref (buffer_list);
+            buffer_list = NULL;
+          }
+        } else {
+            buffer = gst_buffer_new_wrapped (stream->data, stream->current_size);
+          }
       } else if (bs->stream_type == GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K) {
         buffer = parse_jp2k_access_unit (stream);
         if (!buffer) {
@@ -3406,19 +3416,21 @@
       goto beach;
     }
   } else {
-    if (bs->stream_type == GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS &&
-        bs->registration_id == DRF_ID_OPUS) {
-      buffer_list = parse_opus_access_unit (stream);
-      if (!buffer_list) {
-        res = GST_FLOW_ERROR;
-        goto beach;
-      }
-
+    if (bs->stream_type == GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS) {
+      if (bs->registration_id == DRF_ID_OPUS) {
+        buffer_list = parse_opus_access_unit (stream);
+        if (!buffer_list) {
+          res = GST_FLOW_ERROR;
+            goto beach;
+        }
       if (gst_buffer_list_length (buffer_list) == 1) {
         buffer = gst_buffer_ref (gst_buffer_list_get (buffer_list, 0));
         gst_buffer_list_unref (buffer_list);
         buffer_list = NULL;
       }
+    } else {
+        buffer = gst_buffer_new_wrapped (stream->data, stream->current_size);
+      }
     } else if (bs->stream_type == GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K) {
       buffer = parse_jp2k_access_unit (stream);
       if (!buffer) {
