From: Petri H. <phi...@us...> - 2013-10-29 11:19:37
|
# HG changeset patch # User Petri Hintukainen <phi...@us...> # Date 1383045538 -7200 # Node ID 506a70e8bc29a48ba2943635d8ca963e005e6e8c # Branch default # Parent b58b503d09f4d6268ba2c102adfa6a53ccf1ece0 demux HEVC from mpeg-ts diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c --- 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 @@ 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 @@ 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 @@ #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)) { |