[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