diff options
-rw-r--r-- | src/demuxers/demux_ts.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c index 89fb48faa..890b8e12e 100644 --- a/src/demuxers/demux_ts.c +++ b/src/demuxers/demux_ts.c @@ -242,6 +242,8 @@ ISO_14496_PART2_VIDEO = 0x10, /* ISO/IEC 14496-2 Visual (MPEG-4) */ ISO_14496_PART3_AUDIO = 0x11, /* ISO/IEC 14496-3 Audio with LATM transport syntax */ ISO_14496_PART10_VIDEO = 0x1b, /* ISO/IEC 14496-10 Video (MPEG-4 part 10/AVC, aka H.264) */ + STREAM_VIDEO_HEVC = 0x24, + STREAM_VIDEO_MPEG = 0x80, STREAM_AUDIO_AC3 = 0x81, @@ -1098,6 +1100,11 @@ static int demux_ts_parse_pes_header (xine_t *xine, demux_ts_media *m, return header_len; } + if (m->descriptor_tag == STREAM_VIDEO_HEVC) { + m->type = BUF_VIDEO_HEVC; + return header_len; + } + if (m->descriptor_tag == HDMV_SPU_BITMAP) { m->type |= BUF_SPU_HDMV; m->buf->decoder_info[2] = m->pes_bytes_left; @@ -1668,6 +1675,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num case ISO_13818_VIDEO: case ISO_14496_PART2_VIDEO: case ISO_14496_PART10_VIDEO: + case STREAM_VIDEO_HEVC: case STREAM_VIDEO_VC1: if (this->videoPid == INVALID_PID) { #ifdef TS_PMT_LOG @@ -1715,6 +1723,19 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num #endif break; case ISO_13818_PES_PRIVATE: + { + uint32_t format_identifier=0; + demux_ts_get_reg_desc(this, &format_identifier, stream + 5, stream_info_length); + if (format_identifier == 0x48455643 /* HEVC */ ) { + mi = demux_ts_dynamic_pmt_find (this, pid, BUF_VIDEO_BASE, STREAM_VIDEO_HEVC); + if (mi >= 0) { + this->videoMedia = mi; + this->videoPid = pid; + } + break; + } + } + for (i = 5; i < coded_length; i += stream[i+1] + 2) { if ((stream[i] == DESCRIPTOR_AC3) || (stream[i] == DESCRIPTOR_EAC3) || (stream[i] == DESCRIPTOR_DTS)) { |