From 84bd65b9bd7851289e8aed63a792468b82a75a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 6 Jan 2014 13:51:01 +0100 Subject: [PATCH] tsdemux: Add HEVC / h265 support --- gst-libs/gst/mpegts/gstmpegtssection.h | 1 + gst/mpegtsdemux/gstmpegdesc.h | 1 + gst/mpegtsdemux/tsdemux.c | 14 ++++++++++++++ 3 files changed, 16 insertions(+) diff --git a/gst-libs/gst/mpegts/gstmpegtssection.h b/gst-libs/gst/mpegts/gstmpegtssection.h index c6a7d58092..e741cab28e 100644 --- a/gst-libs/gst/mpegts/gstmpegtssection.h +++ b/gst-libs/gst/mpegts/gstmpegtssection.h @@ -297,6 +297,7 @@ typedef enum { GST_MPEG_TS_STREAM_TYPE_VIDEO_JP2K = 0x21, GST_MPEG_TS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW = 0x22, GST_MPEG_TS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW = 0x23, + GST_MPEG_TS_STREAM_TYPE_VIDEO_HEVC = 0x24, /* 0x24 - 0x7e : Rec. ITU-T H.222.0 | ISO/IEC 13818-1 Reserved */ GST_MPEG_TS_STREAM_TYPE_IPMP_STREAM = 0x7f /* 0x80 - 0xff : User Private (or defined in other specs) */ diff --git a/gst/mpegtsdemux/gstmpegdesc.h b/gst/mpegtsdemux/gstmpegdesc.h index 38fa4b35c1..282ce3536e 100644 --- a/gst/mpegtsdemux/gstmpegdesc.h +++ b/gst/mpegtsdemux/gstmpegdesc.h @@ -230,5 +230,6 @@ #define DRF_ID_GA94 0x47413934 #define DRF_ID_CUEI 0x43554549 #define DRF_ID_ETV1 0x45545631 +#define DRF_ID_HEVC 0x48455643 #endif /* __GST_MPEG_DESC_H__ */ diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index f17bafa284..d1f1f5dab3 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -892,6 +892,13 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream, name = g_strdup_printf ("audio_%04x", bstream->pid); caps = gst_caps_new_empty_simple ("audio/x-smpte-302m"); break; + case DRF_ID_HEVC: + template = gst_static_pad_template_get (&video_template); + name = g_strdup_printf ("video_%04x", bstream->pid); + caps = gst_caps_new_simple ("video/x-h265", + "stream-format", G_TYPE_STRING, "byte-stream", + "alignment", G_TYPE_STRING, "nal", NULL); + break; } if (template) break; @@ -947,6 +954,13 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream, "stream-format", G_TYPE_STRING, "byte-stream", "alignment", G_TYPE_STRING, "nal", NULL); break; + case GST_MPEG_TS_STREAM_TYPE_VIDEO_HEVC: + template = gst_static_pad_template_get (&video_template); + name = g_strdup_printf ("video_%04x", bstream->pid); + caps = gst_caps_new_simple ("video/x-h265", + "stream-format", G_TYPE_STRING, "byte-stream", + "alignment", G_TYPE_STRING, "nal", NULL); + break; case ST_VIDEO_DIRAC: if (bstream->registration_id == 0x64726163) { GST_LOG ("dirac");