[dvblast-devel] HEVC and Dolby E support
Dan Lita
dan.lita at b1tv.ro
Thu Jun 26 14:27:23 CEST 2014
Hi,
I would like to propose a patch for bitstream and dvblast for supporting
hevc and Dolby E streams.
hevc (in eutelsat transmissions) identifies as stream type 0x24.
Dolby E is identified as streamtype 0x06 and tag 0x05
Since I'm not a programmer please add my patches if they are okay with you:
bitstream patch:
diff --git a/bitstream/mpeg/psi/pmt.h b/bitstream/mpeg/psi/pmt.h
index 52f188d..eb7535e 100644
--- a/bitstream/mpeg/psi/pmt.h
+++ b/bitstream/mpeg/psi/pmt.h
@@ -64,6 +64,7 @@ extern "C"
#define PMT_STREAMTYPE_VIDEO_MPEG4 0x10
#define PMT_STREAMTYPE_AUDIO_LATM 0x11
#define PMT_STREAMTYPE_VIDEO_AVC 0x1b
+#define PMT_STREAMTYPE_VIDEO_HEVC 0x24
static inline void pmt_init(uint8_t *p_pmt)
{
@@ -159,6 +160,7 @@ static inline const char
*pmt_get_streamtype_txt(uint8_t i_stream_type) {
case 0x19: return "Metadata in 13818-6 Synchronized Download
Protocol";
case 0x1A: return "13818-11 MPEG-2 IPMP stream";
case 0x1B: return "H.264/14496-10 video (MPEG-4/AVC)";
+ case 0x24: return "HEVC video";
case 0x42: return "AVS Video";
case 0x7F: return "IPMP stream";
default : return "Unknown";
dvblast patch:
diff --git a/dvblast/demux.c b/dvblast/demux.c
index 2479617..defbbe3 100644
--- a/dvblast/demux.c
+++ b/dvblast/demux.c
@@ -170,6 +170,7 @@ uint16_t map_es_pid(output_t * p_output, uint8_t
*p_es, uint16_t i_pid)
case 0x02: /* video */
case 0x10: /* video MPEG-4 */
case 0x1b: /* video H264 */
+ case 0x24: /* video HEVC */
if ( b_do_remap )
i_newpid = pi_newpids[I_VPID];
else
@@ -186,8 +187,8 @@ uint16_t map_es_pid(output_t * p_output, uint8_t
*p_es, uint16_t i_pid)
/* Get the descriptor tag */
uint8_t i_tag = desc_get_tag( p_desc );
j++;
- /* Check if the tag is: A/52, Enhanced A/52, DTS, AAC */
- if (i_tag == 0x6a || i_tag == 0x7a || i_tag == 0x7b ||
i_tag == 0x7c)
+ /* Check if the tag is: Dolby E, A/52, Enhanced A/52,
DTS, AAC */
+ if (i_tag == 0x05 || i_tag == 0x6a || i_tag == 0x7a ||
i_tag == 0x7b || i_tag == 0x7c)
SubStreamType=I_APID;
/* Check if the tag is: VBI + teletext, teletext,
dvbsub */
if (i_tag == 0x46 || i_tag == 0x56 || i_tag == 0x59)
@@ -1649,6 +1650,7 @@ static bool PIDWouldBeSelected( uint8_t *p_es )
case 0x10: /* video MPEG-4 */
case 0x11: /* audio AAC LATM */
case 0x1b: /* video H264 */
+ case 0x24: /* video HEVC */
case 0x81: /* ATSC A/52 */
case 0x87: /* ATSC Enhanced A/52 */
return true;
@@ -1664,7 +1666,8 @@ static bool PIDWouldBeSelected( uint8_t *p_es )
uint8_t i_tag = desc_get_tag( p_desc );
j++;
- if( i_tag == 0x46 /* VBI + teletext */
+ if( i_tag == 0x05 /* Dolby E */
+ || i_tag == 0x46 /* VBI + teletext */
|| i_tag == 0x56 /* teletext */
|| i_tag == 0x59 /* dvbsub */
|| i_tag == 0x6a /* A/52 */
@@ -1702,6 +1705,7 @@ static bool PIDCarriesPES( const uint8_t *p_es )
case 0x10: /* video MPEG-4 */
case 0x11: /* audio AAC LATM */
case 0x1b: /* video H264 */
+ case 0x24: /* video HEVC */
case 0x81: /* ATSC A/52 */
case 0x87: /* ATSC Enhanced A/52 */
return true;
@@ -2787,6 +2791,7 @@ static const char *h222_stream_type_desc(uint8_t
i_stream_type) {
case 0x19: return "Metadata in 13818-6 Synchronized Download
Protocol";
case 0x1A: return "13818-11 MPEG-2 IPMP stream";
case 0x1B: return "H.264/14496-10 video (MPEG-4/AVC)";
+ case 0x24: return "HEVC video";
case 0x42: return "AVS Video";
case 0x7F: return "IPMP stream";
default : return "Unknown stream";
Thank you,
Dan Lita
More information about the dvblast-devel
mailing list