amltsdemux: CF2 support parse DVB-DTS [1/1]
PD#SWPL-170600
Problem:
Dvt-dts audio data can not be parsed for 04 patch
link SWPL-72342
Solution:
support parse DVB-DTS
Verify:
ah212
Change-Id: I20819c1475be3588fc97773b9811bd5cc300c543
Signed-off-by: hanghang.luo <hanghang.luo@amlogic.com>
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) {