From 89324208df25730407c5350c17cd85a6268c0689 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sat, 5 Jul 2014 08:58:05 +0200 Subject: [PATCH] Added preliminary HEVC support (no packetizer - only MPEG-TS passthrough) --- src/esfilter.h | 3 ++- src/input/mpegts/dvb_psi.c | 4 ++++ src/muxer/muxer_pass.c | 4 ++++ src/muxer/tvh/mkmux.c | 4 ++++ src/streaming.c | 1 + src/tvheadend.h | 5 +++-- 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/esfilter.h b/src/esfilter.h index e65ae9c6..ec681269 100644 --- a/src/esfilter.h +++ b/src/esfilter.h @@ -45,7 +45,8 @@ extern const idclass_t esfilter_class_ca; extern const idclass_t esfilter_class_other; #define ESF_MASK_VIDEO \ - (SCT_MASK(SCT_MPEG2VIDEO) | SCT_MASK(SCT_H264) | SCT_MASK(SCT_VP8)) + (SCT_MASK(SCT_MPEG2VIDEO) | SCT_MASK(SCT_H264) | SCT_MASK(SCT_VP8) | \ + SCT_MASK(SCT_HEVC)) #define ESF_MASK_AUDIO \ (SCT_MASK(SCT_MPEG2AUDIO) | SCT_MASK(SCT_AC3) | SCT_MASK(SCT_AAC) | \ diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index b777077b..42512eb7 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -1383,6 +1383,10 @@ psi_parse_pmt hts_stream_type = SCT_H264; break; + case 0x24: + hts_stream_type = SCT_HEVC; + break; + default: break; } diff --git a/src/muxer/muxer_pass.c b/src/muxer/muxer_pass.c index c094a244..dde30266 100644 --- a/src/muxer/muxer_pass.c +++ b/src/muxer/muxer_pass.c @@ -136,6 +136,10 @@ pass_muxer_build_pmt(const streaming_start_t *ss, uint8_t *buf0, int maxlen, c = 0x1b; break; + case SCT_HEVC: + c = 0x24; + break; + case SCT_AC3: c = 0x81; break; diff --git a/src/muxer/tvh/mkmux.c b/src/muxer/tvh/mkmux.c index 134021b1..8a5db9b1 100644 --- a/src/muxer/tvh/mkmux.c +++ b/src/muxer/tvh/mkmux.c @@ -273,6 +273,10 @@ mk_build_tracks(mk_mux_t *mkm, const streaming_start_t *ss) codec_id = "V_VP8"; break; + case SCT_HEVC: + tvherror("mkv", "HEVC (H265) codec is not suppored for Matroska muxer (work in progress)"); + continue; + case SCT_MPEG2AUDIO: tracktype = 2; codec_id = "A_MPEG/L2"; diff --git a/src/streaming.c b/src/streaming.c index 0c63c6a3..dc4a0570 100644 --- a/src/streaming.c +++ b/src/streaming.c @@ -508,6 +508,7 @@ static struct strtab streamtypetab[] = { { "AAC", SCT_MP4A }, { "VP8", SCT_VP8 }, { "VORBIS", SCT_VORBIS }, + { "HEVC", SCT_HEVC }, }; /** diff --git a/src/tvheadend.h b/src/tvheadend.h index 96525bd7..3a9dbb4f 100644 --- a/src/tvheadend.h +++ b/src/tvheadend.h @@ -220,13 +220,14 @@ typedef enum { SCT_MP4A, SCT_VP8, SCT_VORBIS, - SCT_LAST = SCT_VORBIS + SCT_HEVC, + SCT_LAST = SCT_HEVC } streaming_component_type_t; #define SCT_MASK(t) (1 << (t)) #define SCT_ISVIDEO(t) ((t) == SCT_MPEG2VIDEO || (t) == SCT_H264 || \ - (t) == SCT_VP8) + (t) == SCT_VP8 || (t) == SCT_HEVC) #define SCT_ISAUDIO(t) ((t) == SCT_MPEG2AUDIO || (t) == SCT_AC3 || \ (t) == SCT_AAC || (t) == SCT_MP4A || \